我正在使用 MVC5 Identity 2.0让用户登录我的网站,其中的身份验证详细信息存储在一个 SQL 数据库中。Net Identity 已经以一种标准的方式实现,这可以在许多在线教程中找到。
IdentityModel 中的 ApplicationUser 类已经扩展为包含一些自定义属性,例如整数 Organization ationId。其思想是,出于数据库关系的目的,可以创建许多用户并将其分配给公共组织。
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; }
}
如何从控制器中检索当前登录用户的 OrganationId 属性? 一旦用户登录,这是否可以通过一个方法获得,还是每次执行控制器方法时,我都可以根据 UserId 从数据库中检索 OrganationId?
在网上浏览时,我发现我需要使用以下命令来登录 UserId 等等。
using Microsoft.AspNet.Identity;
...
User.Identity.GetUserId();
但是,Organization ationId 不是 User 中可用的属性。身份。我是否需要扩展用户。包含 Organization-Id 属性的身份?如果是这样,我该怎么做。
我之所以经常需要 Organization ationId,是因为许多表查询都依赖于 Organization ationId 来检索与已登录用户相关的组织相关的数据。