我已通过以下方式实现Anti forgery token with angular SPA
在网络api中间件中进行了此操作,以便在客户端浏览器上设置cookie, 这将为每个api调用设置cookie。
var tokens = antiforgery.GetAndStoreTokens(context);
context.Response.Cookies.Append("XSRF-TOKEN", tokens.RequestToken,
new CookieOptions {HttpOnly = false, Secure = context.Request.IsHttps}
);
services.AddAntiforgery(options => options.HeaderName = "X-XSRF-TOKEN");
在spa中,我目前正在将Cookie值手动添加到请求拦截器中的标头中,因为两者都位于不同的域中。
if (Cookies.get('XSRF-TOKEN')) {
config.headers['X-XSRF-TOKEN'] = Cookies.get('XSRF-TOKEN');
}
这似乎很好,没有任何问题。
但是,我试图理解整个概念。因此,我尝试了以下方法。
至少,在我进行此测试之前,我假设标头值和cookie值应该相同,并且只有这样,validateantiforgerytoken属性会将其视为正确的发布请求。
如果这个假设是错误的,
完全迷失在不同的想法中!希望有人已经遇到了这些想法或问题,并提供了一些帮助。
谢谢