情景:
某頁面未登陸下能夠訪問,但具體操做時發現未登陸就彈出登陸窗,待完成登陸後繼續操做。
當登陸成功,前端繼續操做(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 不會刷新,因此解決方案很明顯了)