токен защиты от подделки на страницах asp.net core razor?

У меня возникла проблема, которую я не совсем понимаю.

asp.net core 2.2.1 с использованием бритвенных страниц, мне нужно вручную сгенерировать токен защиты от подделки, но вся документация, похоже, утверждает, что это не требуется для бритвенных страниц.

Есть какие-нибудь идеи относительно того, что я здесь делаю не так?

Если вы удалите @ Html.AntiForgeryToken () из формы ниже, токен не будет добавлен. Если это то, что вы должны делать, это здорово, я закончил, но все источники, которые я могу найти, похоже, думают, что в этом нет необходимости.

<form method="post">
    @Html.AntiForgeryToken()
    <div>Source Type: <input asp-for="filter.SourceType" value="JsonEvent"/></div>
    <div>Source Name: <input asp-for="filter.SourceName"/></div>
    <input type="submit"/>
</form>

person Fred    schedule 20.01.2019    source источник
comment
У меня была такая же проблема, но я решил ее, проигнорировав токен защиты от подделки [IgnoreAntiforgeryToken(Order = 1001)]   -  person Farshan    schedule 20.01.2019
comment
Для чего нужен Order = 1001? Я немного поискал и не смог найти ничего, что объясняло бы это. Это почти кажется приоритетом, но для этого атрибута это кажется странным.   -  person Fred    schedule 20.01.2019
comment
github.com/aspnet/Mvc/issues/7012 Я сделал, как было предложено в Эта проблема   -  person Farshan    schedule 20.01.2019
comment
Ключ - это параметр Order. Встроенный [ValidateAntiforgeryToken] имеет порядок 1000, поэтому явная установка [IgnoreAntiforgeryToken] на значение больше 1000 должно решить проблему.   -  person Farshan    schedule 20.01.2019


Ответы (2)


Вам совершенно не нужно использовать код типа @Html.AntiForgeryToken() в элементе формы для создания AntiForgeryToken при использовании страниц Razor ASP.NET Core. Токен создается и отправляется автоматически при отправке формы.

Вы можете проверить эту идею, проверив раздел инструментов разработки вашего браузера. Вы можете проверить заголовки, и вы увидите Form Data _RequestVerificationToken, как показано на этом снимке экрана.

введите описание изображения здесь

Но обратите внимание, что ваши запросы Ajax разные. Например, если вы используете метод jQuery Ajax для публикации в любом обработчике сообщений вашей страницы Razor, вам нужно будет явно сгенерировать токен и передать заголовок вместе с вашим запросом.

person SpiceLogic Inc.    schedule 23.10.2020

Согласно документации, @Html.AntiForgeryToken() добавлять не нужно, так как разметки, которую вы использовали, должно быть достаточно:

<form method="post">
...
</form>

Я бы хотел убедиться, что токен не установлен внизу формы, как указано в этой статье < / а>

person eVolve    schedule 20.01.2019