如何将自定义数据添加到ASP .NET登录会话

时间:2017-08-30 15:08:13

标签: asp.net-mvc authentication

我需要在"登录会话"中添加一些自定义数据。我不知道该怎么做。我应该在登录后创建一些特殊会话吗?我需要存储一些列表等。 我可以向Identity声明添加额外的数据,但只能添加字符串。

我正在使用ASP .NET MVC标准身份验证。

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

1 个答案:

答案 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);
 }

根据需要处理结果。有任何疑问,请问。我希望它有所帮助。