情景:
某页面未登陆下能够访问,但具体操做时发现未登陆就弹出登陆窗,待完成登陆后继续操做。
当登陆成功,前端继续操做(post后端接口)时发现如下错误:
提供的防伪标记适用于用户“”,但当前用户为“XX”。
(登陆以及具体页面操做都是ajax post)
//登陆代码。。。
string
oldCtoken = HttpContext.Request.Cookies[
"__RequestVerificationToken"
].Value;
string
ctoken;
string
ftoken;
AntiForgery
.GetTokens(oldCtoken,
out
ctoken,
out
ftoken);
//生成新token
HttpContext.Request.Cookies.Set(
new
HttpCookie
(
"__RequestVerificationToken"
, ctoken));
可是发现虽然使用了新的cookie token 、 form token ,可是仍是提示用户不对。
接着研究源码。。。经过研究源码发现:生成token的时候 会取当前用户identity。 (以前有遇到登陆后,identity 不会刷新,因此解决方案很明显了)