Обычно я защищаю свои Действия с [Authorize]
но на этот раз я должен проверить, авторизовывается ли пользователь в действии.
Например,
if(userIsAuthorized) {
//do stuff
}
else {
//return to login page
}
Я полагаю, что использую 'Аутентификацию Форм'
Этот вопрос довольно подобен этому, но ни один из данных ответов, казалось, не работал.
Править: Я сделал еще некоторое рытье - кажется, устанавливаю ли я контрольные точки на Действии, которое имеет [Authorize]
, Пользователь. Идентификационные данные установлены, но на Действиях без него, Пользователе. Идентификационные данные пусты, даже если я зарегистрирован
Если вы просто хотите узнать, вошел ли пользователь в систему:
if (User.Identity.IsAuthenticated) { ... }
Если вы пытаетесь сделать что-либо, зависящее от роли:
if (User.IsInRole("Administrators")) { ... }
Экземпляр User
является общедоступным свойством класса Controller
, поэтому у вас всегда есть доступ к нему из контроллера, который вы пишете. Если ни один пользователь не вошел в систему, у вас должен быть GenericPrincipal
для пользователя
и GenericIdentity
для User.Identity
, так что не надо ' Не беспокойтесь о проверке нулей.
Request.IsAuthenticated
должен работать для того, что вы пытаетесь сделать.
Я предлагаю сначала выяснить, какой вид авторизации вы используете. ;)
Вы отправили правильный ответ. Из того, что я помню, копался в атрибуте [Authorize] и связанном с ним коде ActionFilter, MVC внутренне вызывает Page.User.Identity.IsAuthenticated точно так же, как эти примеры кода.