授权
接下来跟着源码来一起学习授权相关知识。
一般的service注入服务方式有如下:
builder.Services.AddAuthorization(option =>
{
//增加授权策略
option.AddPolicy("Api1", builder =>
{
builder.RequireAuthenticatedUser();
builder.RequireClaim("scope", "api1");
builder.AddRequirements(new CustomAuthorizationRequirement("Policy01");
});
});
这里来一起查看AddAuthorization做了什么事?
源码AddAuthorization路径(aspnetcore/src/Security/Authorization/Policy/src/PolicyServiceCollectionExtensions.cs)。
AddAuthorizationCore注册了AuthorizationOptions配置项内容,此内容会在之后的DefaultAuthorizationPolicyProvider类GetPolicyAsync调用其AuthorizationOptions自身的GetPolicyTask(policyName)方法获取以下AddPolicy配置内容(通过PolicyMap)。
AddAuthorization内的option()=>{},是对AuthorizationOptions进行的配置。看一下具体配置内容。
大致看代码,就是通过AuthorizationPolicyBuilder配置完