12
votes

ASP.NET MVC Formes Authentification et actions de contrôleur non authentifiées

J'ai un site ASP.NET MVC qui est verrouillé en utilisant l'authentification des formulaires. Le web.config a

<authentication mode="Forms">
    <forms defaultUrl="~/Account/LogOn" loginUrl="~/Account/LogOn" timeout="2880"/>
</authentication>
<authorization>
    <deny users="?"/>
</authorization>


0 commentaires

3 Réponses :


13
votes

Oui, vous pouvez. Dans votre compte CompteController, il y a un [Autoriser] -Attribute soit au niveau de la classe (pour rendre l'ensemble du contrôleur restreint) ou sur des méthodes spécifiques.

Pour faire des actions spécifiques limitées, vous utilisez simplement l'attribut autorisé sur les méthodes qui gèrent ces actions qui gèrent ces actions. et laissez la classe du contrôleur sans restriction. p>

Voici quelques exemples ... J'espère que cela aide p>

à exiger que les utilisateurs se connectent, utilisez: P>

[Authorize(Users = "Charles, Linus")]
public class SomeController : Controller

// Or
[Authorize(Users = "Charles, Linus")]
public ActionResult SomeAction()


0 commentaires

0
votes

Au lieu de sécuriser toutes les ressources sur votre site Web par défaut, puis à la recherche d'un moyen de fournir un accès anonyme pour des ressources individuelles, vous ferez probablement mieux de prendre l'approche opposée. Ne spécifiez pas les règles d'autorisation dans votre web.config, utilisez les filtres d'autorisation (voir la réponse de Mickel) pour sécuriser des contrôleurs individuels et / ou des actions.


1 commentaires

L'inverse de [Autoriser] est l'attribut [allaitanonymous]



4
votes

Je ne pense pas qu'il y ait un attribut "non autorisé" qui peut être appliqué aux actions et si vous ne voulez pas placer "[Autoriser]" sur toutes les actions sauf deux dans un contrôleur, essayez ce qui suit:

Voici deux méthodes que je peux penser: p>

1- Attribut de localisation dans web.config (non sûr si cela fonctionnera avec le routage MVC, etc.) H2>

après votre P> xxx pré>

dans web.config fichier, ajoutez les éléments suivants: p>

public class AccountController : AuthorizeControllerBase
{
      // your actions etc.
}


0 commentaires