17

我目前正在寻找一种解决方案,以在身份识别3中使用ASP .NET 5 MVC 6中的高级角色/组权限管理。我开始了一个新的预览Starter Web项目带有集成的简易登录系统。ASP .NET 5 MVC 6身份3角色声明组

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

  1. 用户可以在多个组/角色
  2. 组/角色有很多访问对象(例如CanAccessUser,CanEditUser .. ?)
  3. 每个组的这些访问对象(也许索赔)/角色相得益彰
  4. (可选为最终溶液):另外=>访问对象(也许要求)可以由一组独立地分配到一个用户

我已经看到身份已经广泛地为我提供了适合我的表格结构。 (例如AspNetUsers,AspNetUserRoles,AspNetRoles,AspNetRoleClaims),

但我错过了一个很好的示例/文档来使用它们。

对于MVC 5,I使用本实施例:用户有许多组,一组可以有许多角色(角色是在类/函数的源代码的访问对象) ASP.NET Identity 2.0: Implementing Group-Based Permissions Management

存在对这些要求已经是工作的例子,你不必重新发明轮子。

+0

Speedone,你有没有找到解决身份3:基于组权限管理? – capiono

回答

0

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

幸运的是,ASP.NET Identity子项目有一个示例项目,您可以看看here,但它可能无法满足您的所有需求。请注意,这是使用最新的测试版。

4

我们是在同一条船上这里,没有太多的从过程的源读取除了条款...

我们结束了执行政策。政策是授权满足所需的一组索赔。这些策略然后可以应用于控制器。

您可以定义在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    
} 

This article是我这个东西的主要来源,对我来说是一个很好的入门书。祝你好运!

0

此主题帮助我找到了一些可行的工作,但很遗憾这没有更好的文档记录。

以下是我尝试改善这一点。 Asp.net.Identity(3.0.0.0-RC1决赛)

在Startup.cs

- > ConfigurationServices

 //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"); }); 
     // });