So verlängern Sie die verfügbaren Eigenschaften des Benutzers.Identität

Ich bin mit MVC5 Identität 2.0 für Nutzer zum einloggen in meine Seite, wo die Authentifizierungs-Daten werden in einer SQL-Datenbank. Asp.net Identität umgesetzt wurde, in einem standard-Weg, wie kann man in vielen online-tutorials.

Den ApplicationUser Klasse in IdentityModels wurde erweitert um einige benutzerdefinierte Eigenschaften, wie z.B. eine Ganzzahl OrganizationId. Die Idee ist, dass viele Benutzer können erstellt und zugewiesen werden, um eine gemeinsame Organisation für die Datenbank Beziehung Zwecke.

public class ApplicationUser : IdentityUser
    {
        public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
        {
            //Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
            var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
            //Add custom user claims here
            return userIdentity;
        }

        //Extended Properties
        public DateTime? BirthDate { get; set; }
        public long? OrganizationId { get; set; }

        //Key Mappings
        [ForeignKey("OrganizationId")]
        public virtual Organization Organization { get; set; }
    }

Wie kann ich abrufen, die OrganizationId Eigenschaft des aktuell angemeldeten Benutzers aus einem controller?
Ist dies über eine Methode, sobald ein Benutzer angemeldet ist oder muss ich immer das abrufen der OrganizationId aus der Datenbank, basierend auf der Benutzer-id, jedes mal, wenn Sie eine controller-Methode wird ausgeführt?

Lesen, um auf dem web, die ich gesehen habe, die ich verwenden müssen Sie die folgenden Informationen, um die angemeldete UserId etc.

using Microsoft.AspNet.Identity;
...
User.Identity.GetUserId();

Jedoch, OrganizationId ist keine Eigenschaft zur Verfügung, die im User.Identität. Brauche ich, um Benutzer erweitern.Identität gehören die OrganizationId Eigenschaft? Wenn ja, wie gehe ich über dieses.

Den Grund brauche ich die OrganizationId so oft ist, dass viele table-Abfragen sind abhängig von der OrganizationId zum abrufen von Daten in Bezug auf die Organisation, die verbunden ist, um den angemeldeten Benutzer.

Sieht meine Antwort here helfen Sie überhaupt?
So ziemlich die gleiche Antwort von mir hier: stackoverflow.com/a/28138594/809357 - wenn Sie diese Informationen regelmäßig in das Leben der Anfrage, können Sie legen Sie es auf den cookie als eine Behauptung.
Danke @Schuh sowohl in Ihrer Antwort, gearbeitet. Zusätzlich zu Ihren Antworten, die ich hatte, um einen Anspruch auf die im cookie gespeichert. In der IdentityModels Klasse, die ich hatte, um userIdentity.AddClaim(neuen Claim("MyApp:OrganizationId", OrganizationId.ToString())); public async Task< "ClaimsIdentity" - > GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) - Methode.
Danke auch @trailmax Leid, ich habe zu danken, die Sie in einem anderen Kommentar, Stackoverflow kann nur ein Benutzer einen Namen pro Kommentar.

InformationsquelleAutor RobHurd | 2015-02-05

Schreibe einen Kommentar