【发布时间】:2013-04-30 20:54:20
【问题描述】:
我有一个 MVC 4 应用程序,当表单会话到期然后用户尝试注销时遇到问题。
例如。 超时设置为 5 分钟。 用户登录。 用户在 10 分钟内什么都不做。 用户单击注销链接。 用户收到错误:“提供的防伪令牌用于用户“XXXX”,但当前用户是“”。”
然后用户必须通过一些体操来解决这个问题,以便他们可以重新登录然后重新注销(注销用于关闭他们当天的考勤卡)。
我想我明白为什么会发生这种情况......但不知道如何解决它。
编辑: 为什么我认为会发生这种情况是因为最初在加载页面时,会为当前登录的用户生成 AntiForgery 令牌。但是当会话到期并且他们尝试导航到注销页面时,当前用户是“”而不是实际用户。因此存在不匹配并呈现错误。
【问题讨论】:
-
你能分享你的假设为什么会发生错误吗?
-
related post 看起来值得考虑。
-
为什么您的注销操作需要防伪令牌?好像不应该。
-
您描述的行为(以及通过它所需的“体操”)是 IMO 正确的。如果您的注销页面为之前登录的用户执行了一项操作,那么您最好确定您正在为正确的用户执行该操作...
-
我假设您的注销进行了后期操作?如果是get的话就不会出现这个问题了,但是建议做个post注销。
标签: c# asp.net-mvc