Asp.net mvc 5 OnValidateIdentity禁用MVC OWIN记住我选项
当我通过安全戳激活OWIN logout everywhere功能,并使用Asp.net mvc 5 OnValidateIdentity禁用MVC OWIN记住我选项,asp.net-mvc-5,asp.net-identity,owin,Asp.net Mvc 5,Asp.net Identity,Owin,当我通过安全戳激活OWIN logout everywhere功能,并使用CookieAuthenticationProvider的OnValidateIdentity回调和SecurityStampValidator-类时,用户每次关闭浏览器时都会注销 provider.OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<MyUserManager, MyUser>( System.T
CookieAuthenticationProvider
的OnValidateIdentity
回调和SecurityStampValidator
-类时,用户每次关闭浏览器时都会注销
provider.OnValidateIdentity =
SecurityStampValidator.OnValidateIdentity<MyUserManager, MyUser>(
System.TimeSpan.FromSeconds(10),(manager, user) => {
return user.GenerateUserIdentityAsync(manager);
});
provider.OnValidateIdentity=
SecurityStampValidator.OnValidateIdentity(
System.TimeSpan.FromSeconds(10),(管理员、用户)=>{
返回user.GenerateUserIdentityAsync(manager);
});
但是,当我自己在OnValidateIdentity
-回调中执行管道操作(查找和比较安全标记,拒绝或更新标识)时,一切似乎都正常
这是一个已知的错误,还是我错过了什么?或者是否有关于CookieAuthenticationProvider
和使用OnValidateIdentity
的良好文档?通过谷歌挖掘,我只看到了一些简单的例子,但没有给出进一步的见解 其他信息
- 我使用自己的UserStorage实现,它保存了所有 数据库中的数据
- 我注意到每个页面请求调用两次 当我使用 实现时,只执行一个调用
- 已安装的标识版本为2.0.1
SecurityStampValidator.OnValidateIdentity的反汇编中发现了以下代码:
// .. some other code
// ...
ClaimsIdentity claimsIdentity = await regenerateIdentityCallback(userManager, tUser);
if (claimsIdentity != null){
context.get_OwinContext().get_Authentication().SignIn(new ClaimsIdentity[]
{
claimsIdentity
});
}
在我看来,登录
-操作不完整,应该设置“记住我”选项吗?因此,我假设SecurityStampValidator的实现存在缺陷。这基本上是一个缺陷,cookie的重新生成应该尊重cookie上当前的“记住我”选项。作为一种解决方法,您可以复制OnValidateIdentity
代码并在当前上下文属性中馈送,以使持久模式通过:
context.OwinContext.Authentication.SignIn(context.Properties, identity);
这在ASP.NET Identity 2.2中得到解决。请参见我的研究和调试表明,“ispersist”被添加为对用户身份的声明。