17

В настоящее время я ищу решение для использования расширенного управления правами/группами в ASP.NET 5 MVC 6 с идентификатором 3. Я начал новый веб-проект Preview Starter с интегрированной простой системой входа.ASP.NET 5 MVC 6 Identity 3 Роли групп претензий

Теперь мне нужно комплекс «Управление пользователей разрешения» со следующими функциями:

  1. пользователей могут находиться в нескольких группах/ролях
  2. группы/роль имеет множество объектов доступа (например, CanAccessUser, CanEditUser .. .)
  3. эти объекты доступа (возможно, претензии?) Каждой группы/ролей дополняют друг друга
  4. (необязательно для окончательного решения): дополнительно => объекты доступа (возможно, претензии) могут быть назначены независимо группой пользователь

Я видел, что личность уже широко обеспечивает подходящую для меня структуру таблицы. (например, AspNetUsers, AspNetUserRoles, AspNetRoles, AspNetRoleClaims),

Но у меня отсутствует хороший пример/документация для их использования.

Для MVC 5, я использовал этот пример: У пользователей есть много групп, группа может иметь множество ролей (Роли являются объектами доступа в исходном коде классов/функции) ASP.NET Identity 2.0: Implementing Group-Based Permissions Management

EXISTS для этих требований уже что вам не нужно изобретать велосипед.

+0

Speedone, вы нашли решение идентичности 3: Группа Based разрешений управления? – capiono

ответ

0

Если вы ищете образец проекта, в данный момент их не так много. Первое, что нужно посмотреть на страницах проекта aspnet GitHub.

К счастью, подпроект 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"); }); 
     // });