Autoriser l'accès Anonyme à l'appel de certaines actions dans asp.net mvc 3
J'ai une action nommée ForgetPassword. Chaque fois qu'un anonyme tente de récupérer les mesures, il est redirigé vers la Page de Connexion. Ci-dessous sont mes implémentations.
public ActionResult ForgotPassword(string UserName)
{
//More over when i place a breakpoint for the below line
//its not even getting here
return View("Login");
}
Et voici une partie de mon web.fichier de configuration
<location path="">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
<location path="Content">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="Scripts">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="Images">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<authentication mode="Forms">
<forms loginUrl="/Home/Login" timeout="5" slidingExpiration="false" />
</authentication>
- Avez-vous décorer votre
Controller/Action
avecAuthorize
attribut, ou enregistré un mondialAuthorize
filtre?
Vous devez vous connecter pour publier un commentaire.
Que vous niez tout le monde à partir de l'application en utilisant.
À mon humble avis, vous ne devriez pas utiliser le web.config pour le contrôle de l'authentification de votre application au lieu d'utiliser
Authorize
attribut.Ajouter ceci dans votre
Global.asax
fichier sousRegisterGlobalFilters
méthodeou vous pouvez également décorer votre contrôleur avec
[Authorize]
Si vous utilisez ASP.NET MVC4, Pour une action qui nécessitent l'accès Anonyme utilisation
AllowAnonymous
attributComme par Référence, Vous ne pouvez pas utiliser le routage ou le web.les fichiers de configuration pour la sécurité de votre application MVC. La seule méthode prise en charge pour la sécurité de votre application MVC est d'appliquer l'Autoriser à attribuer à chaque contrôleur et de l'utilisation de la nouvelle AllowAnonymous attribut sur le login et le registre des actions. Faire de la sécurité des décisions fondées sur la zone actuelle est une Très Mauvaise Chose et permettra d'ouvrir votre application de vulnérabilités.
De ce lien: http://weblogs.asp.net/jongalloway/asp-net-mvc-authentication-global-authentication-and-allow-anonymous
Si vous êtes en utilisant MVC 3, vous ne pouvez pas faire:
Pourquoi il est mondial et AllowAnonymous attribut ne fonctionne pas sur MVC 3.
Donc, vous devez construire votre propre filtre. Il travaille pour moi (MVC 3), vous pouvez vérifier la solution complète ici.
Je suppose que vous allez sur "Autoriser" attribut sur votre contrôleur, qui aura la force de connexion pour chaque action du contrôleur.
Je recommande de supprimer l'attribut à partir du contrôleur, et définir pour chaque action, un par un.
ou la mise à niveau vers MVC 4 et l'utilisation de la AllowAnonymous attribut.
Si vous utilisez ASP.NET MVC4, vous pouvez essayer de mettre allowanonymous attribut sur votre action comme ceci:
Pour plus d'informations, jetez un oeil à Jon Galloway de l'article:
Authentification globale et Autoriser les connexions Anonymes