【发布时间】:2021-12-08 09:19:33
【问题描述】:
我在我的主 .cshtml 页面中使用了 @Html.AntiForgeryToken() <div ng-controller="MainController as vm">
我已经按照this实现了。
var headers = actionContext.Request.Headers;
var tokenCookie = headers
.GetCookies()
.Select(c => c["__RequestVerificationToken_L21vYmlsZQ2"]) //AntiForgeryConfig.CookieName
.FirstOrDefault();
var tokenHeader = string.Empty;
if (headers.Contains("X-XSRF-Token"))
{
tokenHeader = headers.GetValues("X-XSRF-Token").FirstOrDefault();
AntiForgery.Validate(tokenCookie != null ? tokenCookie.Value : null, tokenHeader);
}
@Html.AntiForgeryToken() 正在生成密钥(例如:“xyz123”),同时在 OnActionExecuting() 中进行验证我得到不同的密钥(例如:“pqr678”)并且在 AntiForgery.Validate(tokenCookie != null ? tokenCookie.Value : null, tokenHeader); 中出现以下错误
无法解密防伪令牌。如果此应用程序由 Web Farm 或集群托管,请确保所有计算机都运行相同版本的 ASP.NET 网页,并且配置指定了显式加密和验证密钥。
注意:我没有重复的令牌,我也尝试在 web.config ref 中添加机器密钥
【问题讨论】:
-
为什么选择
__RequestVerificationToken_L21vYmlsZQ2cookie?不应该是__RequestVerificationToken吗? -
@WillHuang ,在
actionContext.Request.Headers中,名称是__RequestVerificationToken_L21vYmlsZQ2,我尝试使用__RequestVerificationToken和AntiForgeryConfig.CookieName,但这没有用。 -
您能否提供一个示例项目到 GitHub,以便我了解您面临的问题是什么?
标签: angularjs asp.net-mvc asp.net-web-api antiforgerytoken