5.3Role和Claims授權「深入淺出ASP.NET Core系列」
阿新 • • 發佈:2018-11-22
希望給你3-5分鐘的碎片化學習,可能是坐地鐵、等公交,積少成多,水滴石穿,碼字辛苦,如果你吃了蛋覺得味道不錯,希望點個贊,謝謝關注。
Role授權
這是一種Asp.Net常用的傳統的授權方法,當我們在生成Token的時候,配置的ClaimTypes.Role為Admin,而ValuesController.cs是一個普通user(如下圖所示),我們看下是否能訪問成功?
我們把生成的Token通過JWT官網驗證一下,發現多了一個"role":"admin"
Postman結果如下圖所示,結果肯定是沒有許可權的!可以簡單粗暴的說這就是Role授權,基於一組角色來進行授權:
Claims授權
相比Role授權,更推薦大家使用Claims授權,這是.NET Core更推薦的授權方式,是傳統沒有的新東西。
首先,我們要在Starup.cs的ConfigureServices()方法中配置如下程式碼:
其次,我們要在生成token的時候配置Claims,同時在被訪問的Controller上面配置Policy="Admin",如下所示:
我們把生成的Token通過JWT官網驗證一下,發現多了一個"Admin":"true"
以上許可權針對的是整個Controller,如果你想對該控制器內部某個方法開放匿名授權,也沒有問題,只要配置如下程式碼即可。
至此Claims授權就完成了,簡單粗暴,此文只是一個引子,如果想了解更深入的自定義授權方式,可以瀏覽下面的參考文獻。
參考文獻:
Using Roles with the ASP.NET Core JWT middleware
Claims-based authorization in ASP.NET Core