7
votes

Authentification et autorisation de formulaires MVC 4

J'essaie de créer un contrôleur anonyme afin d'obtenir une authentification de formulaire. J'ai configuré mon IIS 7 avec une authentification anonyme et formulaire activée et définissez mon web.config vers nier utilisateurs anonymes. Sur le contrôleur de connexion, j'ai placé la décoration [allowanonymous] sur mon contrôleur (et mes actions).

La seule action que je peux obtenir sur cet ensemble de configuration est l'action de connexion (qui renvoie la vue "Connexion") et je 'm deviner que le MVC me permet d'obtenir cette action parce que je l'ai défini comme l'URL de connexion sur mon web.config.

voici ma configuration Web configuration: xxx

Toutes les autres actions sont redirigées vers l'action de connexion. Sur cet ensemble de configuration, je ne peux pas obtenir d'autres actions importantes telles que la restauration du mot de passe, le registre, etc.

Qu'est-ce que je fais mal?


2 commentaires

Vous ne pouvez pas nier globalement - la restauration ou l'enregistrement de PASWord doit être accessible anonymement.


Alors, que dois-je changer? Si je permet d'accéder anonyme, tout le site est accessible et MVC ne redirige pas l'utilisateur non authentifié vers l'action de connexion.


5 Réponses :


0
votes

Avez-vous essayé d'autoriser l'autorisation anonyme de l'URL comme dans l'échantillon ci-dessous xxx

similaire à ceci, vous devez être réglé pour le mot de passe ResetPassword / Restaurer / registre, etc. / p>


1 commentaires

La décoration n'atteint pas le même comportement?



15
votes

Utiliser un filtre d'authentification globale avec un comportement personnalisé au lieu de la configuration d'autorisation dans web.config (meilleur pour mvc)

Ajouter un filtre global xxx

alors, [allowanonymous] va travaux, et tous les autres contrôleurs et actions nécessitent une autorisation.


2 commentaires

Pouvez vous donner un exemple?


Merci! Vaut à mentionner: après avoir ajouté le filtre autorisé, vous aurez besoin (comme je l'ai fait) pour permettre l'accès anonyme à votre site.



1
votes

Il y a deux approches possibles.

Tout d'abord - vous pouvez refuser les demandes anonymes dans le monde entier avec l'attribut Authorize et marquer ces quelques-uns qui n'ont pas besoin d'autorisation avec attribut allonanonymous (qui est nouveau à MVC4).

seconde - Ne niez pas globalement mais sécurisez plutôt vos contrôleurs / actions sélectionnés avec Autorize Attribut.


2 commentaires

Ce n'est pas précis, concernant votre première approche: si vous niez les demandes anonymes et que vous n'ajoutez pas le filtre Authorize, vous ne pourrez y accéder à aucune action en dehors de l'action de connexion et l'attribut autorangère ne sera pas pris en compte par le Mvc


Je n'étais pas assez clair, le déni devrait bien sûr être fait avec autorisation. J'espère que la version éditée est claire. Merci.



12
votes

Vous pouvez également enregistrer autoriser filtre dans registerglobalfilters méthode: xxx

puis utilisez le allowanonymous Attribut sur les méthodes d'action nécessitant un accès anonyme: xxx


2 commentaires

Merci, Hvost était 2 minutes avant de vous


Aucun problème. Content que tu as eu votre réponse :)



0
votes

J'ai supprimé la partie suivante de web.config, alors il commence à travailler pour moi. XXX


0 commentaires