当前位置:  开发笔记 > 编程语言 > 正文

从角色授权更改为声明授权

如何解决《从角色授权更改为声明授权》经验,为你挑选了1个好方法。

我有一个使用ASP.NET Membership构建的webforms应用程序.我成功迁移到了身份.

我现在想要使用声明授权而不是Roles授权,但旧用户的角色信息已迁移到AspNetUserRoles数据库中的表,但该AspNetUserClaims表为空.迁移后注册的新用户,我可以AspNetUserClaims使用以下代码添加:

IdentityResult result1 = manager.AddClaim(user.Id, new Claim(ClaimTypes.Role, "role"));

但旧用户只在AspNetUserRoles表中注册而不在AspNetUserClaims表中.

    在登录时,创建的声明是否也包括AspNetUserRoles表格中的角色信息,还是仅包括表格中的角色信息AspNetUserClaims

    请问User.IsInRole()同时检查AspNetUserRoles表和AspNetUserClaims表?

    如何将信息从AspNetUserRoles表格迁移到AspNetUserClaims表格?

trailmax.. 6

不要迷上"索赔"一词.这是将信息添加到cookie中的便捷方式.

这里实际上有两种类型的"声明" - 一种被添加到cookie中,另一种被保存在AspNetUserClaims表中.

用户登录时,会创建一个带有标识的cookie.身份包含用户拥有的所有声明.这里声明的是一个键值对,它作为有效负载添加到cookie中.Cookie的要求包含的东西一样User.Id,SecurityStamp,Username一些其他的框架相关的东西...来自角色列表AspNetUserRoles.以及来自的其他索赔AspNetUserClaims.

所以你试图将角色添加到声明中 - 没有任何意义.无论如何,角色将在cookie中作为声明 - 由框架添加.

可能我不是很好解释 - 当您调试应用程序时,分析User控制器的属性并查看ClaimsIdentity并查看所有声明的列表.我所有的喋喋不休都会更有意义.

回答你的第二个问题 - User.IsInRole()不进入数据库.此方法仅检查cookie中的信息,请参阅自己的源代码:它仅检查cookie是否包含类型声明,其中包含ClaimTypes.Role您要检查的角色的名称.

第三个问题......你还想这样做吗?您可以执行类似的SQL语句insert into aspnetuserclaims () select from aspnetUserRoles inner join aspnetroles on aspnetUserRoles.roleid = aspnetroles.id.

我刚才写了一篇关于我博客中的cookie声称的内容- 你会更好地理解它是如何结合在一起的.



1> trailmax..:

不要迷上"索赔"一词.这是将信息添加到cookie中的便捷方式.

这里实际上有两种类型的"声明" - 一种被添加到cookie中,另一种被保存在AspNetUserClaims表中.

用户登录时,会创建一个带有标识的cookie.身份包含用户拥有的所有声明.这里声明的是一个键值对,它作为有效负载添加到cookie中.Cookie的要求包含的东西一样User.Id,SecurityStamp,Username一些其他的框架相关的东西...来自角色列表AspNetUserRoles.以及来自的其他索赔AspNetUserClaims.

所以你试图将角色添加到声明中 - 没有任何意义.无论如何,角色将在cookie中作为声明 - 由框架添加.

可能我不是很好解释 - 当您调试应用程序时,分析User控制器的属性并查看ClaimsIdentity并查看所有声明的列表.我所有的喋喋不休都会更有意义.

回答你的第二个问题 - User.IsInRole()不进入数据库.此方法仅检查cookie中的信息,请参阅自己的源代码:它仅检查cookie是否包含类型声明,其中包含ClaimTypes.Role您要检查的角色的名称.

第三个问题......你还想这样做吗?您可以执行类似的SQL语句insert into aspnetuserclaims () select from aspnetUserRoles inner join aspnetroles on aspnetUserRoles.roleid = aspnetroles.id.

我刚才写了一篇关于我博客中的cookie声称的内容- 你会更好地理解它是如何结合在一起的.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有