【问题标题】:Role Claims in ASP.NET Core Identity compared to Role Permissions in custom authASP.NET Core 身份中的角色声明与自定义身份验证中的角色权限相比
【发布时间】:2018-04-11 21:08:02
【问题描述】:

让我们暂时离开 ASP.NET Identity,假设我们正在为我们的应用程序构建一个自定义身份验证/授权系统。

它将包含以下表格以实现完全的灵活性:
用户
角色
权限
用户角色
角色权限

通过以上内容,我们可以拥有应用程序的完整用户管理部分,管理员可以在其中说用户 A 具有角色 B,角色 B 具有权限 C、D、F。

上述方法过去一直对我有用,但现在让我们切换到使用 ASP.NET Identity 的 ASP.NET Core MVC 应用程序。

尝试在 UserManager 中利用 Microsoft 为您提供的所有 ASP.NET Core Identity 我希望仍然能够实现上述目标,但使用 ASP.NET Core Identity MVC 方式。

我所知道的:
我可以轻松地使用 UserManager 为用户和角色以及用户角色实现 CRUD 页面。

我想弄清楚的:
如何复制“角色具有哪些权限/操作?”的相同行为?概念。

我最初的猜测是,您会将声明与角色结合使用。声明被分配给角色,即 RoleClaims,然后角色被分配给用户。

这样我就可以简单地使用 Authorize 标签检查 Controllers/Action 方法之上的 Roles。此外,如果用户的角色没有声明“DeleteProduct”,则在页面级别更进一步说隐藏/显示删除按钮有点像view-based authorization documentation 所说的。

--

我想弄清楚我是否在正确的道路上使用这些东西。任何建议或更正都会有所帮助。

【问题讨论】:

    标签: c# asp.net asp.net-core asp.net-identity asp.net-core-identity


    【解决方案1】:

    此人似乎对您的特定问题有潜在的解决方案。

    Users Roles Permissions using ASP.NET Core Identity 3

    有关索赔和政策的更多信息

    https://docs.microsoft.com/en-us/aspnet/core/security/authorization/claims

    基本上

    1. 创建新用户
    2. 创建一个新角色
    3. 提出新的声明
    4. 向角色添加声明
    5. 将用户添加到角色
    6. 使用声明制定新策略(在配置服务期间)
    7. 检查用户是否获得策略授权

    注意:不完全确定这是否适用于 ASP.Net Core 2 或您使用的是哪个版本。

    【讨论】:

    • 我也在对此进行评估,这样做的一个缺点是 cookie 大小,因为角色声明将流入 cookie。这使得很难拥有许多权限。通常角色和权限在缓存中,然后是传入的用户角色 - 使用缓存数据验证以进行授权,在我看来,这可能是一个很好的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 2021-02-21
    • 2018-08-31
    • 2010-10-29
    • 2015-04-09
    • 2017-12-22
    相关资源
    最近更新 更多