我刚刚在另一个帖子上被pinged了,因为我的应用程序在iisreset之后不能让用户保持登录。
How do I solve an AntiForgeryToken exception that occurs after an iisreset in my ASP.Net MVC app?
我不得不说,我同意评论者的观点,即这是一种人为的限制。
从我读到的关于Forms身份验证的内容来看,登录的会话信息似乎都存储在内存中,当服务器重新启动时,您会丢失这些信息。
我想要做的是能够简单地将这些信息存储在某个地方,最好是存储在数据库中,这样我就可以继续我的会话。我似乎找不到任何方法来扩展它来做到这一点。我是不是遗漏了什么?我是不是误解了它的工作原理?
我意识到这是他们提供给我们的“免费”套件,但我不想自己滚动,因为他们有很多正确的地方,而我有可能搞砸我自己的解决方案。
编辑:注意,这与会话状态没有任何关系。据我所知,我根本没有使用会话状态,除非框架中我下面的某个东西在内部使用它。
我意识到身份验证使用了cookie,但它们尚未过期。不过,我仍然会在iisreset之后跳转到登录页面。
发布于 2010-02-05 21:53:42
听起来你的问题是,<machineKey />、validationKey和decryptionKey属性被设置为AutoGenerate,这意味着它们会在IIS重置中发生变化。
这意味着加密的持久窗体身份验证cookies在下次出现时将不再有效。
您可以通过手动配置固定的validationKey和decryptionKey来修复此问题。要做到这一点,看看这篇文章:
向下滚动到"Web Farm Deployment Considerations“部分,并生成加密随机密钥。
发布于 2010-02-05 21:20:57
身份验证会话和“会话状态”(跟踪防伪令牌的位置)在ASP.NET中是两个完全独立的东西。
Authentication由浏览器中的cookie跟踪(通常),因此不会受到iis重新启动的影响。
默认情况下,会话状态存储在内存中(在内存中,它将被重启杀死),但可以轻松地存储在SQL Server或专用的状态服务器进程中(这两个进程都可以在iis重启后恢复)。
https://stackoverflow.com/questions/2207394
复制相似问题