2014-09-23 11 views
5

Próbuję utworzyć aplikację MVC5, która korzysta z uwierzytelniania systemu Windows, ale wykorzystuje role wyciągnięte z modelu użytkownika.ASP.NET MVC 5 Tożsamość 2.0, Windows Auth, model użytkownika z atrybutem roli

Szukałem na przykład wysokiego i niskiego poziomu, ale jedyne, które mogę znaleźć, oparte są na starej strukturze tożsamości ASP.NET.

Czy ktoś chce wskazać mi właściwy kierunek ?!

Dzięki!

+0

Role AD lub siatka NTLM i tożsamości? –

+0

Brak ról AD Role byłyby ściśle zdefiniowane w modelu użytkownika aplikacji. – cschiewek

+0

Uwierzytelnianie Windows przez przeglądarkę, którą masz na myśli? – Steve

Odpowiedz

0

Więc wymyśliłem jedno podejście do rozwiązania tego problemu. Utworzono niestandardowy atrybut autoryzacji, który sprawdza model użytkownika dla roli.

using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using App.Models; 
using System.Security.Claims; 

namespace App.Extensions.Attributes 
{ 
    public class AuthorizeUser : AuthorizeAttribute 
    { 
     Context context = new Context(); 

     protected override bool AuthorizeCore(HttpContextBase httpContext) 
     { 

      if (httpContext == null) 
       return false; 

      string login = ClaimsPrincipal.Current.Claims.ElementAt(1).Value.Split('@')[0]; 
      string[] roles = base.Roles.Split(','); 
      User user = context.Users.FirstOrDefault(u => u.Login == login); 

      if (user == null) 
       return false; 
      else if (base.Roles == "") 
       return true; 
      else 
       return roles.Contains(user.Role.ToString()); 
     } 
    } 
} 

Myśli?

Powiązane problemy