ASP.NET 5 MVC 6身份3角色声明组

ASP.NET 5 MVC 6身份3角色声明组,asp.net,asp.net-mvc,asp.net-core,asp.net-core-mvc,asp.net-identity-3,Asp.net,Asp.net Mvc,Asp.net Core,Asp.net Core Mvc,Asp.net Identity 3,我目前正在寻找一个解决方案,在ASP.NET 5 MVC 6中使用身份3的高级角色/组权限管理。我启动了一个新的预览入门网站项目,带有一个集成的简易登录系统 现在我需要一个复杂的“用户权限管理”,具有以下功能: 用户可以处于多个组/角色中 一个组/角色有许多访问对象(例如CanAccessUser、CanEditUser…) 每个组/角色的这些访问对象(可能是声明?)相互补充 (对于最终解决方案是可选的):另外=>access对象(可能是声明)可以由组独立地分配给用户 我已经看到,身份已经广泛地

我目前正在寻找一个解决方案,在ASP.NET 5 MVC 6中使用身份3的高级角色/组权限管理。我启动了一个新的预览入门网站项目,带有一个集成的简易登录系统

现在我需要一个复杂的“用户权限管理”,具有以下功能:

  • 用户可以处于多个组/角色中
  • 一个组/角色有许多访问对象(例如CanAccessUser、CanEditUser…)
  • 每个组/角色的这些访问对象(可能是声明?)相互补充
  • (对于最终解决方案是可选的):另外=>access对象(可能是声明)可以由组独立地分配给用户
  • 我已经看到,身份已经广泛地为我提供了一个合适的表结构。(例如,AspNetUsers、AspNetUserRoles、AspNetRoles、AspNetRoleClaims)

    但我缺少一个好的示例/文档来使用它们

    对于MVC5,我使用了这个示例:用户有许多组,一个组可以有许多角色(角色是类/函数源代码中的访问对象)


    对于这些需求,已经有了一个工作示例,您不必重新发明轮子。

    如果您正在寻找一个示例项目,目前没有那么多。首先要查看的是GitHub项目页面


    幸运的是,ASP.NET Identity子项目有一个示例项目,您可以查看一下,但是它可能没有涵盖您的所有需求。请注意,这是使用最新的测试版。

    我们在这里处于同一条船上,除了源代码之外,在阅读方面没有太多内容

    我们最终实施了政策。保单是满足授权所需的一组索赔。然后可以将这些策略应用于控制器

    您可以在Startup.cs、ConfigureServices中定义策略:

    services.AddAuthorization(options =>
    {
        options.AddPolicy("SalesSenior", policy =>
        {
            policy.RequireClaim("department", "sales");
            policy.RequireClaim("status", "senior");
        });
    });
    
    我们定义了角色,为他们分配了1个或多个声明,并为用户分配了角色,允许他们在点击控制器时根据适当的策略进行检查

    您可以将
    IAuthorizationService
    注入控制器或属性,如下所示:

    public class SalesDashboardController: Controller
    {
        private readonly IAuthorizationService _authz;
    
        public VarianceOverviewController(IAuthorizationService authz)
        {
            _authz = authz;
        }
        ...
    }
    
    然后,您可以使用
    IAuthorizationService
    检查用户声明的有效性

    if (await _authz.AuthorizeAsync(User, "SalesSenior"))
    {
        // User is authorized            
    }
    

    这是我的主要资料来源,对我来说是一本很棒的入门书。祝你好运

    这个帖子帮我找到了一些有用的东西,但遗憾的是没有更好的文档记录

    以下是我在改进这方面的尝试。Asp.net.Identity(3.0.0.0-rc1-final)

    在Startup.cs-->配置服务中

            //Define your policies here, they are strings associated with claims types, that have claim strings... 
            //they need to be in AspNetUserClaims table, user id, department, Dev to be allowed access to the Dev policy
            //add the auth option, below that makes it work, and in the api controller, add the        
            //[Authorize("Dev")] attribute
            services.AddAuthorization(
                options =>
                {
                    options.AddPolicy("Dev", policy => { policy.RequireClaim("department", "Dev"); });
                });
            services.AddMvc();
    

    Speedone,您找到身份3的解决方案了吗:基于组的权限管理?