在注销之前,如何在cookie上保留ASP.NET Identity Claim?

时间:2017-05-19 13:58:32

标签: c# cookies asp.net-mvc-5 asp.net-identity-2

我正在制作一个使用Identity的ASP.NET MVC 5应用程序。部分身份验证包括将声明存储在cookie中,而不将其保存到数据库,因为该声明必须持续到用户注销。注销后,此声明会添加到用户身份中,并且用户可以在登录时随时更改声明的值。为此,我使用以下代码:

{{1}}

这项工作正常一段时间......但是在用户登录声明后大约十分钟就消失了!如何在注销前保留声明?

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以恢复自定义声明。