2014-12-08 3 views
6

Sto lavorando a un sistema di autenticazione che utilizza l'identità ASP.NET con Entity Framework e desidero avere alcune attestazioni che sono valori calcolati anziché essere codificati nella tabella delle attestazioni .Richieste dinamiche dell'utente nell'identità ASP.NET EF

Quando un utente esegue l'accesso, come posso aggiungere rivendicazioni dinamiche a quella sessione di accesso senza aggiungerle effettivamente alla tabella delle attestazioni?

Ad esempio, potrei voler memorizzare il DOB di ciascun utente, ma voglio aggiungere IsBirthday come reclamo se la data di accesso corrisponde al DOB dell'utente. Non voglio dover archiviare un reclamo "IsBirthday" per ogni utente poiché cambia giornalmente per tutti.

Nel mio codice, Io lo uso per il login:

var signInResult = await SignInManager.PasswordSignInAsync(username, password, false, false); 

Dopo questo si chiama posso fare riferimento al ClaimsPrincipal, ma la proprietà sinistri è un IEnumerable, non una lista, quindi non posso aggiungere ad esso.

MODIFICA: Vorrei anche menzionare che sto usando le librerie Microsoft.AspNet.Identity.Owin.

+0

Per la risposta di Chris Pratt, in questa configurazione memorizzerei DOB come proprietà sul modello. – zaparker

risposta

11

OK, tutti, ho fatto un po 'di ricerca nelle classi fornite in ASP.NET Identity e ho trovato quello che dovevo scavalcare. La classe SignInManager ha un metodo CreateUserIdentityAsync che esegue esattamente ciò che volevo. Il seguente codice ha aggiunto la rivendicazione IsBirthday alla mia identità ma non l'ha archiviata nel database.

public class ApplicationSignInManager : SignInManager<ApplicationUser, string> 
{ 
    public override async Task<System.Security.Claims.ClaimsIdentity> CreateUserIdentityAsync(ApplicationUser user) 
    { 
     var identity = await base.CreateUserIdentityAsync(user); 
     identity.AddClaim(new System.Security.Claims.Claim("IsBirthday", user.DOB.GetShortDateString() == DateTime.Now.GetShortDateString())); 
     return identity; 
    } 

    // ... EXCLUDING OTHER STUFF LIKE CONSTRUCTOR AND OWIN FACTORY METHODS ... 
} 
Problemi correlati