Аутентификация для областей MVC3 - PullRequest
2 голосов
/ 05 января 2012

Я создаю приложение MVC с областями. Мне нужно иметь другой метод аутентификации для этих областей.

Я обычно использую httpmodules для аутентификации, в модуле http я проверяю, аутентифицирован ли пользователь (я обычно использую куки) и если нет, я перенаправляю его.

Итак, у меня есть httpmodule для аутентификации всего приложения, и я хочу зарегистрировать еще один httpmodule для аутентификации в этой области.

Я пытался:

  1. с помощью файла web.config в папке области и перечисления там httpmodule.
  2. Использование раздела местоположения в файле web.config.

Оба не работали для меня, модуль http никогда не вызывался.

  1. Как я могу зарегистрировать модуль http для области.
  2. Как мне переопределить httpmodule всего приложения.
  3. Если это неправильный способ, как лучше это сделать.

Спасибо

1 Ответ

2 голосов
/ 18 января 2012

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

public class CustomAuthorizationAttribute : AuthorizeAttribute
{
    private string notifyUrl = string.Format("{0}{1}", GeneralHelper.BaseSiteUrl, "Login");

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (httpContext.User.Identity.IsAuthenticated)
        {
            // get userinformation
            return true;
        }

        httpContext.Response.Redirect(NotifyUrl);
        return false;
    }
}

Если вы не включили перенаправление, он будет перенаправлен логин, определенный в web.config

...