我正在使用IdentityServer4和ASP.NET Core 2.2。在Post Login方法中,我已经使用了ValidateAntiForgeryToken。通常在登录页面上坐了20分钟到2小时后尝试登录时,它会产生一个空白页面。
如果你查看Postman控制台,你会得到一个400 Bad Request消息。然后我将AntiForgery选项的Cookie过期时间设置为90天。我能够让页面保持登录状态长达6小时,仍然能够登录。然而,在大约8个小时(过夜)之后,我再次尝试登录时又收到了空白页面。
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Login
services.AddAntiforgery(options =>
{
options.Cookie.Expiration = TimeSpan.FromDays(90);
});
我希望能够在登录页面停留90天,这是cookie的持续时间,但这并不起作用。 我该如何使AntiforgeryToken的cookie持续整个90天或我设置的任何时间而不超时或过期? 是否有一种方法捕获此错误并将用户重定向回登录方法?
await this._antiforgery.IsRequestValidAsync(HttpContext);
。目前这对我非常有效,而不是使用内置属性。 - Rodney BatesAntiForgeryToken
?在这里,你正在打败AntiForgeryToken
的目的。与其拥有一个持续时间如此之长的令牌,不如一开始就没有它更好。 - Mat J