Estoy usando MVC5 Identity 2.0 para que los usuarios inicien sesión en mi sitio web, donde los detalles de autenticación se almacenan en una base de datos SQL. Asp.net Identity se ha implementado de manera estándar, como se puede encontrar en muchos tutoriales en línea.
La clase ApplicationUser en IdentityModels se ha ampliado para incluir algunas propiedades personalizadas, como un OrganizationId entero. La idea es que se pueden crear y asignar muchos usuarios a una organización común para fines de relación de bases de datos.
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; }
}
¿Cómo puedo recuperar la propiedad OrganizationId del usuario conectado actualmente desde un controlador? ¿Está disponible a través de un método una vez que un usuario ha iniciado sesión o siempre tengo que recuperar el OrganizationId de la base de datos, basado en el UserId, cada vez que se ejecuta un método de controlador?
Al leer en la web que he visto, necesito usar lo siguiente para iniciar sesión en el ID de usuario, etc.
using Microsoft.AspNet.Identity;
...
User.Identity.GetUserId();
Sin embargo, OrganizationId no es una propiedad disponible en User.Identity. ¿Necesito extender User.Identity para incluir la propiedad OrganizationId? Si es así, ¿cómo hago para esto?
La razón por la que necesito el OrganizationId con tanta frecuencia es que muchas consultas de tabla dependen del OrganizationId para recuperar datos relevantes para la Organización que está asociada al usuario conectado.