ASP.NET MVC 3 + проверка подлинности Windows + проверка входа в базу данных - PullRequest
2 голосов
/ 08 декабря 2010

Мне нужно понять, как правильно настроить веб-приложение ASP.NET MVC 3, в котором пользователи регистрируются двумя способами:

  1. Они являются частью домена (аутентификация Windows)
  2. Пользовательская таблица / магазин приложения сообщает, что у них есть доступ к приложению

Чтобы выполнить первое требование, я устанавливаю элемент аутентификации в Windows в файле web.config:

<authentication mode="Windows" />

Второй вариант немного сложнее. Моя текущая мысль состояла в том, чтобы использовать событие HttpApplications AuthenticationRequested. Поэтому код может выглядеть примерно так:

void MvcApplication_AuthenticateRequest( object sender, EventArgs e )
{
  var formsAuthTicket = GetFormsAuthTicket();
  if ( formsAuthTicket == null || formsAuthTicket.Expired )
  {
    var userHasAccess = true; //TODO: Ask the someone if the user has access
    if ( userHasAccess )
    {
      FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket( 1,
        HttpContext.Current.User.Identity.Name,
        DateTime.Now,
        DateTime.Now.AddMinutes( 1 ),
        true,
        HttpContext.Current.User.Identity.Name );

      string encTicket = FormsAuthentication.Encrypt( authTicket );

      this.Response.Cookies.Remove( FormsAuthentication.FormsCookieName );
      this.Response.Cookies.Add( new HttpCookie( FormsAuthentication.FormsCookieName, encTicket ) );
    }
    else 
      throw new HttpException( 401, "User is not authorized" );
  }
}

Есть мысли?

1 Ответ

0 голосов
/ 14 мая 2011

Я думаю, что есть лучший способ реализовать это в ASP.NET MVC, создав глобальный фильтр авторизации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...