2009-08-04 8 views
2

Je suis en train d'écrire une application MVC qui a deux branches à parcourir dès le début. Sur le chemin autorise avec un code PIN et j'utilise l'authentification par formulaire pour limiter l'accès à cette section du code. Toutefois, l'autre chemin acceptera une connexion AD et je dois empêcher les personnes de se déplacer entre les branches en utilisant des URL. Dois-je utiliser un routage personnalisé ou devrais-je créer deux attributs d'autorisation distincts pour limiter l'accès?MVC Routage contre Autorisation/Authorize Tag

Merci

Répondre

2

Vous pouvez utiliser des rôles pour gérer cela avec le AuthorizeAttribute existant. Placez simplement vos utilisateurs AD-autorisés dans un rôle particulier, puis dans les chemins qui nécessitent une connexion AD, définissez les rôles pour ce contrôleur/méthode afin d'exiger le rôle AD. Cela impliquerait la mise en œuvre d'un RoleProvider qui peut sembler quelque peu intimidant, mais qui n'est vraiment pas si mauvais. Mettre en cache les rôles de l'utilisateur dans un cookie afin que vous n'ayez pas besoin de les rechercher à chaque fois. L'avantage ici est que cela va évoluer vers des rôles supplémentaires au fur et à mesure que votre application devient plus complexe.

Vous pouvez également étendre le AuthorizeAttribute existant en remplaçant OnAuthorization et utiliser votre version personnalisée. Cet attribut peut vérifier que non seulement la requête est autorisée, mais qu'elle a le type d'informations d'identification approprié. Le type d'informations d'identification peut être stocké dans la session lors de la connexion et récupéré à partir de là pour les utilisateurs authentifiés. C'est plus simple à écrire, mais pas à l'échelle.