IsInRole Работает только при входе пользователя - PullRequest
1 голос
/ 18 мая 2010

Почему HttpContext.Current.User.IsInRole ("Customer") возвращает false, если пользователь не вошел в систему, я думаю, потому что пользователь считается анонимным, верно ли это, верно?

Спасибо

Ответы [ 3 ]

5 голосов
/ 18 мая 2010

Да, вы правы. Анонимные пользователи не могут принадлежать к роли.

Обратите внимание, что объект User для анонимного пользователя - это GenericPrincipal, и хотя он реализует IPrincipal, метод IsUserInRole всегда возвращает false, поскольку при создании FormsAuthenticationModule роли не предоставлены.

Также обратите внимание, что объектом User для аутентифицированного пользователя является RolePrincipal, который запрашивает RoleManager в IsUserInRole.

0 голосов
/ 18 мая 2010

Это поведение по умолчанию, анонимный пользователь не имеет ролей.

Но если он возвращает false, вы не можете быть уверены, что пользователь не аутентифицирован (лучше использовать User.Identity.IsAuthenticated свойство).

0 голосов
/ 18 мая 2010

Пока пользователь не войдет в ваше приложение, приложение будет вести себя как анонимный пользователь, и этот пользователь не известен вашему приложению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...