Как проверить, авторизовывается ли пользователь в Действии

Обычно я защищаю свои Действия с [Authorize] но на этот раз я должен проверить, авторизовывается ли пользователь в действии.

Например,

if(userIsAuthorized) {
    //do stuff
}
else {
    //return to login page
}

Я полагаю, что использую 'Аутентификацию Форм'

Этот вопрос довольно подобен этому, но ни один из данных ответов, казалось, не работал.

Править: Я сделал еще некоторое рытье - кажется, устанавливаю ли я контрольные точки на Действии, которое имеет [Authorize], Пользователь. Идентификационные данные установлены, но на Действиях без него, Пользователе. Идентификационные данные пусты, даже если я зарегистрирован

26
задан Community 23 May 2017 в 10:31
поделиться

3 ответа

Если вы просто хотите узнать, вошел ли пользователь в систему:

if (User.Identity.IsAuthenticated) { ... }

Если вы пытаетесь сделать что-либо, зависящее от роли:

if (User.IsInRole("Administrators")) { ... }

Экземпляр User является общедоступным свойством класса Controller , поэтому у вас всегда есть доступ к нему из контроллера, который вы пишете. Если ни один пользователь не вошел в систему, у вас должен быть GenericPrincipal для пользователя и GenericIdentity для User.Identity , так что не надо ' Не беспокойтесь о проверке нулей.

46
ответ дан 28 November 2019 в 07:00
поделиться

Request.IsAuthenticated должен работать для того, что вы пытаетесь сделать.

5
ответ дан 28 November 2019 в 07:00
поделиться

Я предлагаю сначала выяснить, какой вид авторизации вы используете. ;)

Вы отправили правильный ответ. Из того, что я помню, копался в атрибуте [Authorize] и связанном с ним коде ActionFilter, MVC внутренне вызывает Page.User.Identity.IsAuthenticated точно так же, как эти примеры кода.

1
ответ дан 28 November 2019 в 07:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: