【发布时间】:2021-10-27 18:12:12
【问题描述】:
我正在尝试为 Asp.net Core 构建基于权限的授权,同时我正在从 .net 框架迁移到核心。我根据自己的需要(使用身份)构建了一个授权系统。基本上我正在向角色添加声明,并且用户具有角色。我构建了用于将角色分配给用户并将声明分配给角色的复选框。一切正常,但这是我的问题:
当系统运行时,假设 user1 具有“管理员角色”。 user1 可以根据使用他的角色->声明的策略访问页面。问题从这里开始。当 user1 登录时,如果我更改“Admin”角色的声明,user1 将在他/她注销并重新登录之前生效。
有人有解决这个问题的想法吗?
【问题讨论】:
-
当用户登录时,您似乎正在生成一个令牌,其中包含该用户在登录时的角色和/或声明,因此您需要重新生成该令牌(如果这更有意义,请再次登录)并将其发送回用户。如果您使用 cookie,这应该不会太难(您可以在没有密码的情况下登录已经登录的用户)
-
实际上我没有在 Asp.net Core 身份系统上添加任何新内容。使用 .net 框架,我使用会话和自定义授权类来处理会话。有了核心,我想在构建项目时尝试个人帐户身份验证(内置)。我从身份用户派生了 ApplicationUser 。我只对页面进行编码以向角色添加声明并向用户添加角色(使用 UserManager 和 RoleManager)。我在 startup.cs 上添加了策略。老实说,我不知道授权是如何工作的。这是我的存储库链接。如果你教我,我将不胜感激。
标签: asp.net asp.net-core