我正在开发一个使用ASP.NET Identity与Entity Framework的身份验证系统,并且我想有一些声明是计算值,而不是硬编码到声明表中。
当用户登录时,如何将动态声明添加到该登录会话中,而不实际将它们添加到声明表中?
例如,我可能想要存储每个用户的出生日期,但如果登录日期与用户的出生日期匹配,我希望添加IsBirthday作为声明。我不想为每个用户存储“IsBirthday”声明,因为每个人的出生日期每天都会改变。
在我的代码中,我使用以下内容进行登录:
当用户登录时,如何将动态声明添加到该登录会话中,而不实际将它们添加到声明表中?
例如,我可能想要存储每个用户的出生日期,但如果登录日期与用户的出生日期匹配,我希望添加IsBirthday作为声明。我不想为每个用户存储“IsBirthday”声明,因为每个人的出生日期每天都会改变。
在我的代码中,我使用以下内容进行登录:
var signInResult = await SignInManager.PasswordSignInAsync(username, password, false, false);
调用此方法后,我可以引用ClaimsPrincipal,但Claims属性是IEnumerable类型,而不是List类型,因此我无法添加内容。
编辑:我还应该提到我正在使用Microsoft.AspNet.Identity.Owin库。