2010-12-08 16 views
2

J'ai besoin un aperçu sur la façon de configurer une application Web ASP.NET MVC 3 où les utilisateurs sont connectés de deux manières:ASP.NET MVC 3 + authentification Windows + Base de données Connexion chèque

  1. Ils sont une partie du domaine (authentification Windows)
  2. utilisateur de l'application de table/magasin dit qu'ils ont accès à l'application

pour gérer la première exigence que je suis en train de l'élément authenication à Windows dans le web.config:

<authentication mode="Windows" /> 

Le second est celui qui est un peu plus délicat. Ma pensée actuelle était d'utiliser l'événement HttpApplications AuthenticationRequested. Donc, le code pourrait ressembler à ceci:

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"); 
    } 
} 

Des pensées?

Répondre

0

Je pense qu'il existe une meilleure façon de l'implémenter dans ASP.NET MVC en créant un filtre d'autorisation global

+0

Le filtre d'authentification serait trop tard dans le jeu. L'autorisation est généralement utilisée pour vérifier que l'utilisateur actuel a accès à un contrôleur/une action donné. –

+0

Je ne vois pas de différence entre l'accès à tous les contrôleurs et l'accès à l'application si vous n'avez aucune ressource dans votre application à laquelle l'accès n'est pas contrôlé par ASP.NET MVC – xelibrion