【问题标题】:Claim based authorization in ASP.NET CoreASP.NET Core 中基于声明的授权
【发布时间】:2018-08-11 18:12:22
【问题描述】:

我正在使用 Claims 在 ASP.NET Core 中开发自己的项目,我参考了以下文章:http://blog.geveo.com/Claim-based-authorization-ASP-core

我很难理解,我们在步骤 05 中有 Permissions,因为它之前没有在任何地方定义。有什么想法吗?

services.AddAuthorization(options =>
{
    options.AddPolicy(PolicyTypes.Teams.Manage, policy => {
        policy.RequireClaim(CustomClaimTypes.Permission, Permissions.Teams.Manage);
    });
    options.AddPolicy(PolicyTypes.Teams.AddRemove, policy => {
        policy.RequireClaim(CustomClaimTypes.Permission, Permissions.Teams.AddRemove);
    });
    options.AddPolicy(PolicyTypes.Users.Manage, policy => {
        policy.RequireClaim(CustomClaimTypes.Permission, Permissions.Users.Add);
    });
    options.AddPolicy(PolicyTypes.Users.EditRole, policy => {
        policy.RequireClaim(CustomClaimTypes.Permission, Permissions.Users.EditRole);
    });
}

【问题讨论】:

    标签: c# asp.net-core asp.net-core-webapi claims-based-identity


    【解决方案1】:

    该博客文章中的第 2 步缺少一个包含 UsersTeams 类的类。它应该是这样的:

    public static class Permissions
    {
        public static class Users
        {
            public const string Add = "users.add";
            public const string Edit = "users.edit";
            public const string EditRole = "users.edit.role";
        }
    
        public static class Teams
        {
            public const string AddRemove = "teams.addremove";
            public const string EditManagers = "teams.edit.managers";
            public const string Delete = "teams.delete";
        }
    }
    

    最后,这只是定义了在整个应用程序中用于识别各种权限的通用值。你也可以只传递一些字符串,但是集中定义它们会更容易使用,因为你不需要记住魔法字符串。

    【讨论】:

      猜你喜欢
      • 2017-06-08
      • 2018-12-28
      • 2021-04-13
      • 2014-03-15
      • 2020-11-16
      • 2023-03-19
      • 2012-11-07
      • 2018-03-01
      相关资源
      最近更新 更多