我正在制作一个使用Identity的ASP.NET MVC 5应用程序。部分身份验证包括将声明存储在cookie中,而不将其保存到数据库,因为该声明必须持续到用户注销。注销后,此声明会添加到用户身份中,并且用户可以在登录时随时更改声明的值。为此,我使用以下代码:
{{1}}
这项工作正常一段时间......但是在用户登录声明后大约十分钟就消失了!如何在注销前保留声明?
答案 0 :(得分:1)
您的问题是,SecurityStampValidator
中配置的Startup.Auth.cs
正在消除存储在Cookie中的自定义声明。
您需要在ConfigureAuth(IAppBuilder app)
:
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(10),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)),
特别是传递了user.GenerateUserIdentityAsync(manager))
如果Cookie中存在自定义声明,您需要修改此方法ApplicationUser.GenerateUserIdentityAsync
以恢复自定义声明。