c# – ASP.NET身份EF中的动态用户声明

c# – ASP.NET身份EF中的动态用户声明,第1张

概述我正在开发一个使用ASP.NET Identity with Entity Framework的身份验证系统,我希望有一些声明是计算值,而不是硬编码到声明表中. 当用户登录时,如何在不将实际添加到声明表的情况下向该登录会话添加动态声明? 例如,我可能想要存储每个用户的DOB,但是如果登录日期与用户的DOB匹配,我想要添加IsBirthday作为声明.我不想为每个用户存储“IsBirthday”声明 我正在开发一个使用ASP.NET IDentity with Entity Framework的身份验证系统,我希望有一些声明是计算值,而不是硬编码到声明表中.

当用户登录时,如何在不将实际添加到声明表的情况下向该登录会话添加动态声明?

例如,我可能想要存储每个用户的dob,但是如果登录日期与用户的dob匹配,我想要添加IsBirthday作为声明.我不想为每个用户存储“IsBirthday”声明,因为它每天都会为每个用户更改.

在我的代码中,我用它来登录:

var signInResult = await SignInManager.PasswordSignInAsync(username,password,false,false);

调用此方法后,我可以引用ClaimsPrincipal,但Claims属性是IEnumerable,而不是List,所以我无法添加它.

编辑:我还应该提到我正在使用Microsoft.AspNet.IDentity.Owin库.

解决方法 好的,大家,我做了一些挖掘ASP.NET IDentity中提供的类,找到了我需要覆盖的类. SignInManager类有一个createuserIDentityAsync方法,它完全符合我的要求.以下代码将IsBirthday声明添加到我的标识中,但未将其存储在数据库中.
public class ApplicationSignInManager : SignInManager<ApplicationUser,string>{  public overrIDe async Task<System.Security.Claims.ClaimsIDentity> createuserIDentityAsync(ApplicationUser user)  {      var IDentity = await base.createuserIDentityAsync(user);      IDentity.AddClaim(new System.Security.Claims.Claim("IsBirthday",user.dob.GetShortDateString() == DateTime.Now.GetShortDateString()));      return IDentity;  }  // ... EXCLUDING OTHER STUFF liKE CONSTRUCTOR AND OWIN FACTORY METHODS ...}
总结

以上是内存溢出为你收集整理的c# – ASP.NET身份EF中的动态用户声明全部内容,希望文章能够帮你解决c# – ASP.NET身份EF中的动态用户声明所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1261981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存