2017-08-30 2 views
0

Ich muss einige benutzerdefinierte Daten zu "Login-Sitzung" hinzufügen. Ich weiß nicht wie. Soll ich nach dem Login eine spezielle Sitzung erstellen? Ich muss einige Listen usw. speichern. Ich kann zusätzliche Daten zu Identitätsansprüchen hinzufügen, aber nur Zeichenfolgen.So fügen Sie benutzerdefinierte Daten zur ASP.NET-Anmeldesitzung hinzu

Ich benutze ASP .NET MVC Standard-Authentifizierung.

var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 
+0

Welche Art von benutzerdefinierten Daten? – PedroSouki

+0

Zum Beispiel Liste einer anderen meiner Klasse. Oder nur Liste von ganzen Zahlen, Strings usw. – Petr

+0

erweitert IdentityUser Hilfe? [stackoverflow.com] (https://Stackoverflow.com/a/22695200/744160) – IamCP

Antwort

1

können Sie erweitern die IdentityUser:

public class ApplicationUser : IdentityUser 
{ 
    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) 
    { 
    var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 
    return userIdentity; 
    } 

    // insert the informations that you want as new properties 
    public string FullName { get; set; } 
    public int EmployeeId { get; set; } 
} 

Oder Sie können, wie dies in der Sitzung gesagt:

HttpContext context = System.Web.HttpContext.Current; 
string result = context.Session["employeeInfo"]?.ToString(); 
if (string.IsNullOrEmpty(result)) 
{ 
    ApplicationUser user = context.GetOwinContext() 
     .GetUserManager<ApplicationUserManager>() 
     .FindById(System.Web.HttpContext.Current.User.Identity.GetUserId()); 
    result = _employeeAppService.GetById(user.EmployeeId); 
    context.Session.Add("employeeInfo", result); 
} 

das Ergebnis Treat wie Sie wollen. Irgendwelche Zweifel, frag einfach. Ich hoffe, es hilft.

+0

Über ApplicationUser Erweiterung .. Wie kann ich auf diese Eigenschaften in meinem Code (Controller, Ansichten) zugreifen? Ich kann User.Identity. Verwenden, aber ich kann nur Standardeigenschaften oder Eigenschaften sehen, die ich in Claim eingegeben habe (in diesem Fall nur String). Danke. – Petr

+0

Wenn Sie diese neuen Eigenschaften hinzufügen, werden sie Teil des Anwendungsbenutzers, als E-Mail, Name usw. Sie müssen das Register ändern, um diese Eigenschaften zu füllen. – PedroSouki

+0

Da ich nicht genau dein Bedürfnis habe, kann ich dir nicht vorschlagen, was ich für den besseren Ansatz halte. Aber es ist eine gute Übung, die Controller-Klasse zu erweitern und all diese "Klempnerarbeiten" dort durchzuführen. – PedroSouki

Verwandte Themen