asp.net core mvc權限控制:權限控制介紹

在進行業務軟件開發的時候,都會涉及到權限控制的問題,asp.net core mvc提供了相關特性。mvc

在具體介紹使用方法前,咱們須要先了解幾個概念:app

1,claim:英文翻譯過來是聲明的意思,一個claim包含Type,Value兩項信息。我把claim理解成一個權限的定義,好比Type=會員,Value=刪除操做asp.net

2,Identity:表示用戶的身份信息,好比用戶名ide

3,Principal:我理解成認證票據,裏面包含identity,claim信息。ui

4,Policy:英文翻譯過來是政策的意思,我理解的是權限驗證的一個規則,就是當前我須要如何驗證權限,好比要執行當前操做,必須具備會員刪除操做的claim.net

5,角色:一組權限的集合翻譯

6,用戶:一個使用系統的帳戶信息中間件

 

在asp.net core mvc中配置權限控制的方法:接口

1,引入Microsoft.AspNetCore.Identity.EntityFrameworkCore庫,這個庫中提供了用戶,角色,登陸等相關操做,而且能夠進行功能擴展。ip

2,在startup.cs文件中註冊服務接口以及中間件

public void ConfigureServices(IServiceCollection services)

{

......

services.AddIdentity<TUser, TRole>();

.....

}

 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)

{

......

app.UseIdentity();

......

}

 

TUser:系統中自定義的用戶類

public class ApplicationUser: IdentityUser<int>

{

//系統中擴展的用戶參數

}

TRole:系統中自定義的角色類

public class ApplicationRole: IdentityRole<int>

{

//系統擴展的角色參數

}

3,在控制器或者控制器方法上增長AuthorizeAttribute特性,配置權限控制

AuthorizeAttribute特性中包含了一個Policy配置,就是配置權限驗證規則,實例以下:

[Authorize(Policy ="goods")]

 public class GoodsController : Controller

{}

 

可是這裏的goods只是規則的名稱,那這個規則又是如何設置的呢?在startup.cs的ConfigureServices中使用AddAuthorization擴展方法進行配置,實例以下:

 

  public void ConfigureServices(IServiceCollection services)

{

.....

services.AddAuthorization(config=>{

//

 config.AddPolicy("goods", builder => {
                builder.AddRequirements(new ClaimsAuthorizationRequirement("goods", new string[] { "module" }));
            });

});

.....

}

AddPolicy是增長規則方法,第一個參數表示規則的名稱,第二個參數是具體的規則列表,咱們這裏只增長了一個權限驗證的

規則ClaimsAuthorizationRequirement

 

ClaimsAuthorizationRequirement表示一個權限規則的信息,構造方法包含兩個參數,第一個參數表示cliam的type值,第二個

參數是claim的value集合,它表示驗證當前用戶是否具備指定type,而且具備任意一個value中指定值的claim

 

通過以上配置後,若是當前用戶要訪問GoodsController控制器(不限制方法,若是AuthorizeAttribute是使用在方法上,那隻驗

證對應的方法,也能夠屢次使用),就必須具備Claim(type=goods , value=module)的權限

 

到這裏,咱們就完成了權限控制的邏輯,以上內容只是我的理解,歡迎你們指正。

相關文章
相關標籤/搜索