1. 程式人生 > >5.3Role和Claims授權「深入淺出ASP.NET Core系列」

5.3Role和Claims授權「深入淺出ASP.NET Core系列」

希望給你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