Как легко перенаправить, если не прошли проверку подлинности в MVC 3? - PullRequest
17 голосов
/ 21 июля 2011

Я новичок в ASP.NET и пытаюсь найти способ легко перенаправить неаутентифицированного пользователя с любой страницы сайта на страницу входа.Я бы предпочел не помещать следующий код в каждую функцию HTTP GET, если есть другая опция.

if (!Request.IsAuthenticated)
{
     return RedirectToAction("LogOn", "Account");
}

Ответы [ 4 ]

32 голосов
/ 21 июля 2011

Отметьте свой контроллер атрибутом [Authorize] http://msdn.microsoft.com/en-us/library/system.web.mvc.authorizeattribute.aspx

См. Ваш web.config, по умолчанию у вас должна быть включена аутентификация с помощью форм authentication mode="Forms" http://msdn.microsoft.com/en-us/library/eeyk640h.aspx

Также посмотритеэтот вопрос ASP.NET MVC Авторизация

В случае, если вы хотите иметь пользовательское поведение Авторизация, смотрите здесь Настройка авторизации в ASP.NET MVC

13 голосов
/ 21 июля 2011

Вы можете поставить атрибут [Authorize] над каждым действием, которое необходимо аутентифицировать.

Также убедитесь, что этот раздел определен в вашем Web.Config:

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
3 голосов
/ 12 сентября 2012

Я только что попробовал это:

<!-- using custom auth with MVC redirect -->
<authentication mode="None">
  <forms loginUrl="~/Home/Index"/>
</authentication>

, и это все еще работает, хотя я использую кастомную аутентификацию.Не уверен насчет тайм-аута - будет [Authorize] по-прежнему использовать по умолчанию для Forms Auth или он вообще не будет управлять тайм-аутами (предпочтительное поведение для пользовательской аутентификации).

0 голосов
/ 02 сентября 2015

Я использовал приведенный ниже фрагмент кода и нашел его очень элегантным, не требующим написания каких-либо операторов перенаправления.MVC заботится о перенаправлении на основе конфигурации страницы входа в формы, и после успешного входа в систему / регистрации пользователь возвращается на начальную запрашиваемую страницу

 if (!User.Identity.IsAuthenticated)
 {
    //return new HttpUnauthorizedResult(); //This or the below statement should redirect the user to forms login page
    return new HttpStatusCodeResult(System.Net.HttpStatusCode.Unauthorized);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...