我有一个MVC 4应用程序,当表单会话过期时并且用户尝试注销时会出现问题。
例如: 超时设置为5分钟。 用户登录。 用户10分钟内未执行任何操作。 用户点击LogOff链接。 用户收到错误消息:"提供的防伪令牌是为用户“XXXX”准备的,但当前用户是“”。
然后用户必须经过一些变通才能绕过此问题,以便可以重新登录再次注销(注销用于关闭他们当天的时间记录卡)。
我认为我知道为什么会发生这种情况……但不确定如何解决它。
编辑: 我认为发生这种情况的原因是,当页面加载时,AntiForgery令牌是为当前已登录的用户生成的。但当会话过期并且他们尝试导航到注销页面时,当前用户为空而不是实际用户。因此存在不匹配,并呈现错误。