Проблема с проверкой анти-подделки - PullRequest
0 голосов
/ 14 мая 2010

У меня проблема с токеном MVC Anti подделка. Когда я делаю аутентификацию, у меня появляется псевдокод, подобный этому:

var user = userRepository.GetByEmail(email);
System.Threading.Thread.CurrentPrincipal = HttpContext.Current.User = user;

тем самым я могу получить текущего пользователя в своем коде так:

var user = HttpContext.Current.User as EntityUser;

Это работает нормально, пока я не добавлю атрибут [ValidateAntiForgeryToken] к действию. Когда я добавляю атрибут, я получаю

Требуемый токен против подделки не был предоставлен или был недействительным.

Если я закомментирую эту строку:

System.Threading.Thread.CurrentPrincipal = HttpContext.Current.User = user;

Проверка защиты от подделки работает нормально, но у меня нет удобного способа получить моего "EntityUser" из HttpContext. Есть идеи как обойти это? С наилучшими пожеланиями Микаэл

Ответы [ 2 ]

3 голосов
/ 15 мая 2010

Я не думаю, что это связано.Когда вы добавляете атрибут [ValidateAntiForgeryToken] в действие вашего контроллера, вам также необходимо добавить скрытое поле внутри формы:

<%= Html.AntiForgeryToken() %>

Если вы отправляете его через AJAX, вам всегда нужно отправлять этот токен по запросу.

0 голосов
/ 29 августа 2012

На самом деле AntiForgeryToken использует HttpContextBase.User при проверке. См. AntiForgeryWorker.Validate

...