Мне нужно понять, как правильно настроить веб-приложение ASP.NET MVC 3, в котором пользователи регистрируются двумя способами:
- Они являются частью домена (аутентификация Windows)
- Пользовательская таблица / магазин приложения сообщает, что у них есть доступ к приложению
Чтобы выполнить первое требование, я устанавливаю элемент аутентификации в 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" );
}
}
Есть мысли?