在ajax调用之后为表单重新生成AntiForgeryToken

时间:2018-04-23 15:28:47

标签: ajax asp.net-core-2.0 antiforgerytoken

关注asp-net core docs我使用ajax成功调用了我的操作,并将防伪标记添加为标题。

现在我想“按照请求”进行验证。 ajax调用不刷新表单,验证令牌对所有后续请求都是相同的。哪个工作正常但不满足我的安全要求。

我想在我的回复中添加一个新令牌,更新表单并确保一旦我使用了无效的令牌。

2 个答案:

答案 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?