Кажется, я помню, что после того, как вы вошли в систему, ваш токен изменился, так как ваше имя пользователя, как мне кажется, меняет этот токен, следовательно, больше не будет действительнымЯ попытаюсь проверить это дважды, но почти наверняка столкнулся с этим в прошлом.
Однако в приведенном выше коде вы столкнетесь с другими проблемами, если будете использовать этот шаблон.Действия публикации обычно не предназначены для отображения представления, если только не произошла ошибка исключения / проверки и вы повторно отображаете страницу.Вообще вы бы перенаправили.Я вижу, что кто-то затронул это в комментарии выше, и они правы.
Это не означает, что вы не должны использовать эти действия, но остерегайтесь пересекать это через логин.В этом предыдущем посте упоминается использование имени пользователя с токенами:
Устранение проблем с токенами против подделки
public void Validate(HttpContextBase context, string salt) {
Debug.Assert(context != null);
string fieldName = AntiForgeryData.GetAntiForgeryTokenName(null);
string cookieName = AntiForgeryData.GetAntiForgeryTokenName(context.Request.ApplicationPath);
HttpCookie cookie = context.Request.Cookies[cookieName];
if (cookie == null || String.IsNullOrEmpty(cookie.Value)) {
// error: cookie token is missing
throw CreateValidationException();
}
AntiForgeryData cookieToken = Serializer.Deserialize(cookie.Value);
string formValue = context.Request.Form[fieldName];
if (String.IsNullOrEmpty(formValue)) {
// error: form token is missing
throw CreateValidationException();
}
AntiForgeryData formToken = Serializer.Deserialize(formValue);
if (!String.Equals(cookieToken.Value, formToken.Value, StringComparison.Ordinal)) {
// error: form token does not match cookie token
throw CreateValidationException();
}
string currentUsername = AntiForgeryData.GetUsername(context.User);
if (!String.Equals(formToken.Username, currentUsername, StringComparison.OrdinalIgnoreCase)) {
// error: form token is not valid for this user
// (don't care about cookie token)
throw CreateValidationException();
}
if (!String.Equals(salt ?? String.Empty, formToken.Salt, StringComparison.Ordinal)) {
// error: custom validation failed
throw CreateValidationException();
}
}