В моей модели страницы индекса есть строковая переменная с именем cookie. Этот файл cookie устанавливается с использованием следующего метода:
private string GetXsrfToken()
{
this.Request.Cookies.TryGetValue("XSRF-TOKEN", out var token);
var xsrfToken = token ?? "TestToken";
return xsrfToken;
}
Тогда на моей странице Razor он используется так:
....
<div>
<input type="submit" name="btn_signin" value="Sign In" id="btn_signin" formaction="~/SignIn/?_csrf=@Model.cookie" default />
</div>
....
Проблема, возникающая у меня при первой загрузке страницы, - метод GetXsrfToken () возвращает «TestToken». После отладки я понял, что это потому, что cookie устанавливается перед загрузкой страницы, поэтому cookie XSRF-TOKEN для этой страницы еще не существует.
В IndexModelModel у меня есть методы OnGet и OnPostSignIn, и я попытался установить переменную cookie в обоих случаях, используя:
cookie = GetXsrfToken();
Однако метод OnGet вызывается слишком рано, и его добавление в метод OnPost означает, что он будет вызван слишком поздно.
Так что его нужно установить после полной загрузки страницы, но я не уверен, как это реализовать. Любой совет будет оценен.