Проверка подлинности .NET MVC Forms - отладка IsInRole ()? - PullRequest
1 голос
/ 19 июня 2010

Я использую проверку подлинности с помощью форм на моем веб-сайте MVC.Я администрирую пользователей и роли, используя параметр конфигурации ASP.NET по умолчанию в Visual Studio.Пока все хорошо.

Я могу успешно сделать Page.User.IsInRole("Moderator") в Просмотр .True возвращается, как и ожидалось.

Однако при вызове Context.User.IsInRole("Moderator") внутри Global.asax Application_PostAuthenticateRequest() (или любого более позднего события в течение цикла, к слову ..)False возвращается.

В чем разница между Page.User и Context.User?И как я могу получить те же (ожидаемые) результаты в Global.asax?

1 Ответ

1 голос
/ 25 июня 2010

На этом этапе контекст все еще может работать под учетной записью aspnet или учетной записью, с которой вы запускаете пул приложений.Возможно, вы захотите выполнить тест, в котором вы создадите пару (или все) событий, доступных в Global.asax, и распечатаете результат Context.User.Name в текстовый файл.Тогда, возможно, вы увидите, существует ли какое-либо значение для имени.Я видел, что имя будет пустым, если сайт работает как учетная запись aspnet.

Вы также можете проверить подключения к вашей базе данных и посмотреть, кто пытается войти в базу данных в то время, когда Context.User.IsInRole ("Moderator") возвращает false.

Также (и это выстрел в темноте) вы можете посмотреть, что вам дает Thread.CurrentPrincipal.IsInRole («Модератор»).Я надеюсь, что эти предложения помогут с отладкой.

...