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