gpt4 book ai didi

asp.net-mvc - 在 ASP.NET MVC 中使用 DotNet OpenId 记住我

转载 作者:行者123 更新时间:2023-12-03 23:56:19 26 4
gpt4 key购买 nike

在 ASP.NET MVC 中使用 DotNetOpenAuth 3 并实现 RememberMe 工具......

我发现即使我在 FormsAuthentication.RedirectFromLoginPage 和 FormsAuthentication.SetAuthCookie 中将 createPersistentCookie 设置为 true,一旦 ASP.NET session 超时,用户也不会被记住。

如果我检查 cookie,我发现它被标记为持久性并且将来确实有到期日期,我假设是因为我将 web.config 表单超时设置为几年之后。无论如何,如果用户关闭浏览器并重新打开它,他们会被正确记住 - 只要 ASP session 没有超时。

An older post Scott Hanselmann 的让我想知道是否是因为 FormsAuthentication 尝试更新身份验证票,并且可能在一个不起作用的 OpenId 模型中,但我已经在 web.config 中设置了 FORMS SlidingExpiration="false"无论如何我认为强制持久cookie 会使那些东西变得无关紧要。

我也想知道为什么 DotNetOpenId MVC 示例不包含 RememberMe 复选框 - 也许它有些棘手?

另一方面,在 StackOverflow 上,我看到我会自动在 session 中被记住。想知道他们是否使用了 DotNetOpenId 以外的其他东西来进行 OpenId 身份验证。

还有其他人在 ASP.NET MVC 中使用 DotNetOpenId 成功完成了 RememberMe 吗?有什么技巧吗?

[更新]

谢谢你的帮助,安德鲁。原来这与 DotNetOpenId 无关。

我收藏,看完this ,我的托管服务提供商可能会定期回收应用程序池,这导致使用新机器 key 完成身份验证票证加密。

根据前面的链接文章,我在我的 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" />

最佳答案

我仍然认为 cookie 名称应该匹配......但这里有别的东西。

听起来你是说只要 web.config 文件中的超时很大,那么事情就可以了。但是一旦你缩短它,你的持久性 cookie 就不会超过超时值。这个论坛主题帮助我回答了这个问题:
http://forums.asp.net/p/1010241/1347970.aspx#1347970

似乎 web.config 中的超时会影响所有 cookie。它表示身份验证票的持续时间。所有身份验证 cookie 都有此“生存时间”超时,无论它们是否“持久”。因此,持久性 cookie 和非持久性 cookie 之间的区别在于,前者会在不同的浏览器 session 中持续存在,而后者会在浏览器关闭时(提前)死亡。

这有意义吗?

关于asp.net-mvc - 在 ASP.NET MVC 中使用 DotNet OpenId 记住我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/768367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com