Angular 6 和 AutoValidateAntiforgeryToken

罗伯托·阿莱西

我已经搜索了很多,但我没有找到如何实现 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 是空的。
如果有人可以帮忙,谢谢。

爱德华

对于您的问题,请检查以下几点以更好地了解您的问题。

  1. 对于CookieXSRFStrategy,它配置XSRF-TOKENascookie nameX-XSRF-TOKENas header Namefor XSRF
  2. 为了对应于AngularAsp.Net Core就像您所做的那样使用此约定。

    • 配置您的应用程序以在名为 XSRF-TOKEN 的 cookie 中提供令牌

    • 配置防伪服务以查找名为 X-XSRF-TOKEN 的标头。

因此,如果您想AntiforgeryToken从 Angular 站点获取,请尝试通过XSRF-TOKEN.

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章