我需要在"登录会话"中添加一些自定义数据。我不知道该怎么做。我应该在登录后创建一些特殊会话吗?我需要存储一些列表等。 我可以向Identity声明添加额外的数据,但只能添加字符串。
我正在使用ASP .NET MVC标准身份验证。
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
答案 0 :(得分:2)
您可以扩展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; }
}
或者您可以像这样进行会话:
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);
}
根据需要处理结果。有任何疑问,请问。我希望它有所帮助。