Подтвердить что ты не робот

Как легко перенаправить, если не аутентифицироваться в MVC 3?

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

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

Ответ 1

Отметьте свой контроллер атрибутом [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

Ответ 2

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

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

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

Ответ 3

Я просто попробовал это:

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

и он все еще работает, хотя я использую пользовательский auth. Однако не уверен в тайм-ауте - будет [Авторизовать] по-прежнему использовать значение по умолчанию для Forms Auth или он не будет управлять таймаутами вообще (предпочтительное поведение для пользовательского auth).

Ответ 4

Я использовал приведенный ниже фрагмент кода и нашел его очень элегантным, не требуя писать какие-либо инструкции перенаправления. 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);
 }