Стандартная страница входа и ошибка 400 из-за AntiforgeryToken
На стандартной странице входа в систему razor возникает проблема при выполнении следующих действий:
- Убедитесь, что вы вышли из системы
- Откройте 2 вкладки в одном браузере, со страницей входа в обе.
- Войдите в систему на 1 вкладке, затем попробуйте войти на 2-й вкладке.
Когда вы входите в систему со второй вкладки, генерируется ошибка 400. Простое решение этой проблемы — добавить «[IgnoreAntiforgeryToken]» на страницу входа.
Насколько я понимаю, токен Antiforgery используется, чтобы помешать кому-либо генерировать почтовый запрос, который будет выполняться в контексте текущего вошедшего в систему пользователя, но, поскольку страница входа в систему является общедоступной, я не понимаю, как это улучшит безопасность входа в систему. страница.
Но если это так, то почему Microsoft не делает этого для стандартной страницы входа в систему? Имеет ли какое-либо значение для безопасности добавление «[IgnoreAntiforgeryToken]» на эту страницу?
Если бы я сделал это, вероятно, лучше было бы также добавить что-то вроде этого (непроверенное), как если бы пользователь вошел в систему как кто-то другой на второй вкладке, что могло бы вызвать 400 ошибок в дальнейшем.
public async Task<IActionResult> OnPostAsync(string returnUrl = null)
{
if(User.Identity.IsAuthenticated)
{
var LoggenInAsCurrentUser = (User.Identity.Name == Input.Email);
return RedirectToPage(LoggenInAsCurrentUser ? "/Homepage" : "/LoggedinAsOtherUser");
}