练习+博客,量化自己的进步!
Claim个人感觉与Roles用户角色非常的像,Claim管理与角色管理已经应用上都非常的像。可能我学的浅,还未深入了解其意。
1.claim管理
2.添加claim授权策略
3.应用
claim管理
与角色管理一样,增删改查,字段属性也不多。在功能实现上的区别是,角色是在角色管理中给绑定多个用户,claim是在用户管理中给用户分配多个claim。
1.自定义的ApplicationUser继承于IdentityUser,添加的导航属性有Claims、Logins、Tokens、UserRoles,这个工作之前都已经做过了,UserRoles角色的应用上一篇也已经做过了。
2.migration后数据库中也添加了Claims表AspNetUserClaims
3.自定义一个Claim Enum,AuthClaimEnum(也可以做一个数据库管理的Claim)
4.自定义UserClaimsViewModel
5.一个给用户分配Claim的是视图页面。
6.userManager.FindbyIdAsync(Id) 查找用户
userManager.GetClaimsAsync(user) 获取用户的所有Claim
userManager.UpdateAsync() 更新用户(添加Claims)
自定义一个Claim Enum
public enum AuthClaimEnum
{
EditUser,
EditStudent,
EditRole
}
在编辑用户的页面中添加展示用户Claim,如下:
用户Edit方法中编辑代码:
public async Task<IActionResult> Edit(string Id)
{
ViewBag.Type = "Edit";
var model = await userManager.FindByIdAsync(Id);
// 获取用户的Claims
var claims = await userManager.GetClaimsAsync(model);
ViewBa