2011-05-25 3 views
2

suivant le tutoriel ici:asp.net autorisation de rôle mvc ne fonctionne pas

http://www.asp.net/mvc/tutorials/authenticating-users-with-windows-authentication-cs

Je suis en train de mettre en œuvre l'authentification et l'autorisation fenêtres. IIS sur Localhost est configuré pour utiliser l'authentification Windows. Voici les éléments pertinents de mon web.config:

 <authentication mode="Windows"> 

     </authentication> 

     <authorization> 
     <deny users="?" /> 
     </authorization> 

Dans mon contrôleur, j'ai ceci:

[Authorize(Roles = "MY_DOMAIN\\SomeGroup")] 
    public ActionResult Index() 
    { 
     IList<CampusListViewModel> campusList = _campusRepository.List(true); 
     return View("Index", campusList); 
    } 

Maintenant, laisse dire que je mets GroupeExemple égal à un groupe AD dont je suis un membre. Dans ce cas, l'attribut authorize semble fonctionner et je suis autorisé à voir la vue. Ensuite, disons que j'ai mis SomeGroup égal à un groupe dont je ne suis pas membre ... encore, les choses semblent fonctionner ... Je ne suis pas autorisé à voir la vue.

Je sais ce que vous pensez: "Down-Voter cette question boiteuse ... qu'est-ce que ce perdant veut de plus de l'attribut autoriser?" Le problème est que, au cours de mes tests, je me suis retiré d'un groupe AD dont j'étais précédemment membre. Pour une raison quelconque, je suis toujours en mesure de voir la vue lorsque je mets SomeGroup égal à ce groupe.

En utilisant la méthode IsInRole de l'objet utilisateur comme indiqué ci-dessous:

@User.IsInRole("MY_DOMAIN\\GroupINoLongerBelongTo") 

sorties "TRUE". Donc, quelque chose, quelque part, pense toujours que je suis dans ce groupe AD. Nous avons trois contrôleurs de domaine et j'ai vérifié chacun pour vérifier que je ne suis pas dans le groupe, juste au cas où il y avait un problème avec la réplication à travers les contrôleurs et cela ne semble pas être le problème.

Qu'est-ce qui me manque? Est-ce que IIS cache ce genre de chose? J'ai essayé de redémarrer IIS et de redémarrer le serveur en vain ... des idées?

MISE À JOUR: Ceci est maintenant résolu. J'ai fait les deux changements suggérés par @artem ci-dessous et aucun d'eux ne semblait fonctionner. J'ai ensuite éteint mon ordinateur dans un accès de pique et ai piétiné pour déjeuner. Quand je suis revenu une heure plus tard et que j'ai mis mon ordinateur sous tension, les choses ont commencé à fonctionner. Donc, une combinaison des suggestions de @ artme et un redémarrage ont résolu cela.

Je suppose que le burrito chili vert J'ai mangé au déjeuner ne peut être exclu non plus ...

+1

Je sais que ceci est résolu, mais il y a encore un facteur inconnu ici donc voici mes 2 cents: la liste des groupes dans votre jeton est seulement construite une fois lorsque vous vous connectez, puis mis en cache. donc si vous changez l'appartenance d'un groupe à l'AD, l'utilisateur doit se reconnecter pour obtenir l'appartenance au groupe mise à jour – Menahem

+0

merci pour les informations supplémentaires! – seanicus

Répondre

1

Avez-vous CacheRolesInCookie ensemble false? En outre, consultez this solution.

+0

Merci pour la réponse. Cependant, j'ai essayé les deux solutions et aucune ne semblait fonctionner. – seanicus

+0

Avez-vous déjà trouvé ce qui n'allait pas? –

Questions connexes