在ASP.NET MVC中使用DotNetOpenAuth 3并实现RememberMe工具......
我发现即使我在FormsAuthentication.RedirectFromLoginPage和FormsAuthentication.SetAuthCookie中将createPersistentCookie设置为true,一旦ASP.NET会话超时,用户也不会被记住.
如果我检查cookie我发现它被标记为持久性并且将来确实有一个到期日期,我假设因为我将web.config FORMS超时设置为几年.无论如何,如果用户关闭浏览器并重新打开它,他们就会被正确记住 - 只要ASP会话没有超时.
Scott Hanselmann的一篇较老的帖子让我想知道是不是因为FormsAuthentication试图更新身份验证票证,而且可能在OpenId模型中无效但我在web.config中设置了FORMS SlidingExpiration ="false",无论如何我认为强制持久cookie将使这些东西无关紧要.
我也想知道为什么DotNetOpenId MVC示例不包含RememberMe复选框 - 可能有一些棘手的问题吗?
另一方面,在StackOverflow,我看到我会在会话中自动记住.想知道他们是否使用了除DotNetOpenId以外的东西来进行OpenId认证.
还有其他人在ASP.NET MVC中使用DotNetOpenId成功完成了RememberMe吗?任何招数?
[更新]
谢谢你试图帮忙,安德鲁.原来这不是关于DotNetOpenId.
在阅读本文之后,我收集到的是,我的托管服务提供商可能会定期回收应用程序池,这导致使用新机器密钥完成身份验证票证加密.
根据前面的链接文章,我在我的Web.Config中的System.Web下添加了以下内容,它解决了这个问题:
<machineKey
validationKey="(generated a new key to place here)"
decryptionKey="(generated a new key to place here)"
validation="SHA1"
decryption="AES" />
Run Code Online (Sandbox Code Playgroud)