Authentification ASP.NET MVC Forms et actions de contrôleur non authentifiées
J'ai un ASP.NET MVC site qui est verrouillé à l'aide de l'Authentification par Formulaires. Le web.config a
<authentication mode="Forms">
<forms defaultUrl="~/Account/LogOn" loginUrl="~/Account/LogOn" timeout="2880"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
Aucun de mes autres pages que Compte/ouverture de session peuvent être consultés à moins que l'utilisateur est authentifié.
Maintenant, je suis en train d'ajouter PayPal IPN sur mon site et pour ce faire j'ai besoin d'avoir deux pages qui s'occupent de confirmation de paiement de PayPal et je vous remercie de la page. Ces deux pages doivent être disponibles pour les utilisateurs anonymes.
Je voudrais que ces pages à des actions de contrôleur de mon Compte contrôleur. Est-il possible que je peux appliquer un attribut spécifique des méthodes d'action que de les rendre disponibles pour les utilisateurs anonymes? J'ai trouvé plusieurs posts ici qui tentent de le faire, mais il n'y avait plus de gens voulaient le scénario inverse.
Fondamentalement, je veux peut AccountController
classe ont pas d'autorisation pour la plupart des méthodes à l'exception de quelques. Pour l'instant il ressemble seulement la méthode d'ouverture de session est disponible pour les utilisateurs anonymes.
source d'informationauteur Mike Weerasinghe
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez. Dans votre AccountController il y a un [Autoriser]-attribut, soit sur le niveau de la classe (pour rendre l'ensemble du contrôleur limité) ou sur des méthodes spécifiques.
De faire des actions spécifiques restreint, vous utilisez simplement l'Autoriser-attribut sur les méthodes qui manipulent ces actions, et de laisser le contrôleur de classe sans restriction.
Voici quelques exemples... espérons que cela aide
Pour obliger les utilisateurs à la connexion, utilisation:
Pour restreindre l'accès pour des rôles spécifiques, utilisation:
Et de restreindre l'accès à des utilisateurs spécifiques, utilisation:
Comme vous pouvez le voir, vous pouvez soit utiliser l'attribut au niveau de la classe ou à la méthode de niveau. Votre choix!
Je ne pense pas qu'il y est un "Bloquer" attribut qui peut être appliquée à des actions et si vous ne voulez pas lieu "[Autoriser]" sur tous, mais deux actions dans un contrôleur, essayez les solutions suivantes:
Voici deux méthodes que je pense:
1 - la position de l'attribut dans le Web.config (Pas sûr si cela va fonctionner avec MVC de routage etc.)
Après votre
dans le web.fichier de config, ajoutez la ligne suivante:
Où Compte/ActionOne est le nom de la méthode de l'action que vous souhaitez donner l'accès anonyme. Pour la deuxième Action, copiez le code et le coller juste après et de changer le nom de l'Action.
Je ne suis pas sûr si cela va fonctionner en raison de la MVC de routage, etc, mais lui donner un essai.
2 - Contrôleur De Base
Si la solution précédente ne fonctionne pas, votre meilleur pari serait de créer un contrôleur de base qui est décoré avec de l'Autoriser attribut:
Alors tous vos contrôleurs de héritent de celui-ci:
Cela fera toute contrôleur qui hérite de AuthorizeControllerBase nécessitent une autorisation/enregistrement dans d'appeler l'une des méthodes.
Alors vous devez supprimer de votre site web.config
Au lieu de s'assurer de toutes les ressources de votre site web par défaut, puis la recherche d'un moyen de garder l'anonymat de l'accès aux ressources individuelles, vous êtes probablement mieux de prendre le contre-pied. Ne spécifiez pas de règles d'autorisation dans votre site web.config, puis l'Autorisation d'utilisation des filtres (voir Mickel de réponse) pour sécuriser les contrôleurs et/ou des actions.