过去几天我一直在学习Asp.Net Identity,例如,我熟悉使用或授权控制器。 [Authorize(Roles = "Admin")][Authorize(Policy = "OnlyAdminAndModerators")]
我正在使用JWT令牌,通过“ [[Authorize(Roles =“ Admin”)]]”进行授权时,我要做的就是在令牌上设置角色类型,如下所示:
{
"nameid": "a173e923-1808-4d7d-2b64-08d684882677",
"unique_name": "yuri",
"role": [
"Admin",
"Moderator"
],
"nbf": 1549522727,
"exp": 1549609127,
"iat": 1549522727
}
Run Code Online (Sandbox Code Playgroud)
这样,我的控制器就可以通过上的“角色”名称json和“ Admin ” 的值进行身份验证。
我所听到的是可以在Identity AspNetRole表上创建一个角色,通过AspNetRoleClaims表将一个声明与该角色相关联,例如,Admin将具有“ CanAdd”声明,然后在Startup类上创建一个一条政策说类似 options.AddPolicy("Add Role", policy => policy.RequireClaim("CanAdd", "AddClaim"));
最后,我可以继续使用我的控制器,使用设置方法,[Authorize(Policy = "Add Role")]控制器将授权任何具有Admin角色的用户,因为他可以拥有CanAdd声明。
抱歉,我知道这是一个大问题,但我真的很想完成这项工作。
提前致谢。