2014-09-23 16 views
5

Sto provando a creare un'applicazione MVC5 che utilizza l'autenticazione di Windows ma utilizza i ruoli estratti da un modello Utente.ASP.NET MVC 5 Identity 2.0, Autenticazione Windows, Modello utente con attributo di ruolo

Ho cercato in alto e in basso per un esempio, ma gli unici che riesco a trovare sono basati sul vecchio framework di identità ASP.NET.

Qualcuno ha voglia di indicarmi la direzione giusta ?!

Grazie!

+0

ruoli AD o una mesh di NTLM e identità? –

+0

Nessun ruolo AD, i ruoli dovrebbero essere definiti rigorosamente nel modello Utente dell'applicazione. – cschiewek

+0

Autenticazione di Windows tramite il browser intendete ?? – Steve

risposta

0

Quindi ho trovato un approccio per risolvere questo problema. Ho creato un attributo di autorizzazione personalizzato che controlla il modello utente per un ruolo.

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()); 
     } 
    } 
} 

Pensieri?

Problemi correlati