我已经搜索了很多,但我没有找到如何实现 AutoValidateAntiforgeryToken。
我正在使用 TypeScript 创建一个 Angular 6 spa,连接到端点 .NET Core 2.1
在 ConfigureServices 添加
services.AddAntiforgery(options => options.HeaderName = "X-XSRF-TOKEN");
在配置中添加 AddMvc() 之前
app.Use(next => context =>
{
string path = context.Request.Path.Value;
if (string.Equals(path, "/", StringComparison.OrdinalIgnoreCase) || string.Equals(path, "/index.html", StringComparison.OrdinalIgnoreCase))
{
// We can send the request token as a JavaScript-readable cookie,
// and Angular will use it by default.
var tokens = antiforgery.GetAndStoreTokens(context);
context.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken, new CookieOptions() { HttpOnly = false });
}
return next(context);
});
Angular 文档不清楚,如果我理解得很好,我应该读取一个名为 X-XSRF-TOKEN 的 cookie 并在 http 调用中作为标头传输回:但我尝试以 angular 读取此 cookie(使用 ngx-cookie-service,与代码为 this.cookieSvc.get("X-XSRF-TOKEN")) 这个 cookie 是空的。
如果有人可以帮忙,谢谢。
对于您的问题,请检查以下几点以更好地了解您的问题。
XSRF-TOKEN
ascookie name
和X-XSRF-TOKEN
as header Name
for XSRF
。为了对应于Angular
,Asp.Net Core
就像您所做的那样使用此约定。
配置您的应用程序以在名为 XSRF-TOKEN 的 cookie 中提供令牌
配置防伪服务以查找名为 X-XSRF-TOKEN 的标头。
因此,如果您想AntiforgeryToken
从 Angular 站点获取,请尝试通过XSRF-TOKEN
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句