0

У меня есть приложение ASP.NET Core. Я использовал атрибут ValidateAntiForgeryToken для всех методов действия POST.Как использовать ValidateAntiForgeryToken на уровне контроллера в MVC?

Теперь я думаю использовать ValidateAntiForgeryToken на уровне контроллера, чтобы он мог позаботиться об POST и GET методах.

Ниже приведен пример контроллер

[ValidateAntiForgeryToken] 
public class SearchController : Controller 
{ 
    public SearchController() 
    { 
    } 

    [HttpGet] 
    public IActionResult Index() 
    {   
     return View(); 
    }  

    [HttpPost] 
    public IActionResult Save(MyModel model) 
    { 

    } 

}

Когда пользователь получает доступ к URL http://localhost/search, им не уверены в том, как Index метод действия получит forgerytoken? Прямо сейчас я получаю ошибку Bad Request, потому что в запрос не входит токен.

ответ

5

От http://blog.stevensanderson.com/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/

Ограничения Анти-Подделка хелперов

Он работает только с запросами POST, а не GET запросы. Возможно, это не ограничение, потому что в соответствии с обычными соглашениями HTTP вы не должны использовать GET-запросы для чего-либо иного, кроме операций только для чтения.

Так что это не полезно на уровне контроллера.

-1

На ваш взгляд вам нужно включить анти-подделку.

@using (Html.BeginForm("Save", "Search", FormMethod.Post)) 
{ 
    @Html.AntiForgeryToken() 
    // Rest of html 
} 

Таким образом, когда вы делаете сообщение, токен анти-подделки отправляется вместе с запросом.

+0

Мой вопрос не был связан с POST. Его о GET – LP13