2012-01-27 1 views
2

Je crée une application intranet ASP.NET MVC3 avec l'authentification Windows. Je veux seulement que les utilisateurs de domaine utilisent cette application. Une fois qu'un utilisateur de domaine est authentifié (avec Active Directory), je prévois de créer des utilisateurs (avec un nom d'utilisateur AD), rôles & tables UserRoles dans SQL Server pour autorisation. Par conséquent, si un utilisateur fait partie d'un rôle qui possède un ensemble d'autorisations (pour accéder aux contrôleurs/actions), je ne devrais autoriser que les utilisateurs de ce rôle à les exécuter/les afficher. Par exemple: s'il y a une action/Emplacements/Créer, les rôles autorisés à effectuer cela, ne peuvent le faire que s'il y a une action/Emplacements/Créer.Comment utiliser une autorisation personnalisée basée sur les rôles avec l'authentification Windows dans ASP.NET MVC3?

Quelqu'un peut-il me donner des indications? Dois-je créer un filtre d'action personnalisé et utiliser l'attribut filter pour toute méthode d'action à laquelle le filtre doit s'appliquer?

Répondre

0

Pour restreindre l'accès à une vue ASP.NET MVC, vous restreignez l'accès à la méthode d'action qui rend la vue. Pour ce faire, l'infrastructure MVC fournit la classe AuthorizeAttribute.

Exemple:

[Authorize(Roles = "Admin, Super User")] 
public ActionResult AdministratorsOnly() 
{ 
return View(); 
} 

Voir here pour plus de détails.

Notez que l'utilisation de l'attribut [Autoriser] nécessite que vous utilisiez une sorte de fournisseur d'appartenance.

+0

Merci @autonomatt. Puisque je préfère utiliser notre propre structure de table pour les utilisateurs/rôles dans SQL Server plutôt que pour l'appartenance, les rôles et le profil d'ASP.NET, devrais-je implémenter un fournisseur d'appartenances personnalisé? Est-ce que [this] (http://msdn.microsoft.com/en-us/library/f1kyba5e%28v=vs.100%29.aspx) article un bon moyen de procéder? –

+1

C'est ce que j'ai fait. Lorsque je faisais des recherches, je suis tombé sur beaucoup de messages qui disent la même chose. L'utilisation de la structure de table MS n'est pas recommandée. Principalement en raison de la façon dont il stocke certaines données, ce qui rend très difficile à interroger. J'utilise NHibernate dans ma couche d'accès aux données et j'ai construit un fournisseur d'adhésion NHibernate personnalisé. [Cet article] (http://www.codeproject.com/Articles/55174/Custom-Fluent-Nhibernate-Membership-and-Role-Provi) m'a aidé. Et [cet article par Mauricio Scheffer] (http://bugsquash.blogspot.com/2010/11/windsor-managed-membershipproviders.html) est quelque peu lié si vous voulez utiliser IoC. – autonomatt

+0

Merci @autonomatt –

Questions connexes