关注asp-net core docs我使用ajax成功调用了我的操作,并将防伪标记添加为标题。
现在我想“按照请求”进行验证。 ajax调用不刷新表单,验证令牌对所有后续请求都是相同的。哪个工作正常但不满足我的安全要求。
我想在我的回复中添加一个新令牌,更新表单并确保一旦我使用了无效的令牌。
答案 0 :(得分:0)
要生成新的AntiForgeryToken,请执行以下操作:
//inject IAntiforgery antiforgery into your class
var antiforgeryTokenSet = antiforgery.GetAndStoreTokens(httpContext);
然后从您的后端代码返回antiforgeryTokenSet.RequestToken
到客户端代码,以便它现在可以访问新的请求令牌。请注意,对GetAndStoreTokens
的调用将返回反伪造TokenSet的新cookie部分作为响应的一部分。因此,当客户端代码在其下一个请求中发回RequestToken时,TokenSet的两个部分都将存在,并且TokenSet将验证。
答案 1 :(得分:0)
您必须在每个请求上调用以下代码:-
var token = antiforgery.GetAndStoreTokens(httpContext);
context.Response.Cookies.Append(requestTokenCookieName, tokens.RequestToken, new CookieOptions()
{
HttpOnly = false,
Secure = true
});
它将创建新令牌并将其添加到响应中。但是,对每个请求调用上面的代码并没有那么有益。
有关防伪的更多信息,请参见以下链接:- How to implement X-XSRF-TOKEN with angular2 app and net core app?