68 votes

Attribut d'autorisation dans ASP.NET MVC

Je vais avoir du mal à comprendre l'utilisation réelle de [Authorize] de l'attribut ASP.NET MVC. Comme par le concept va, si nous ajoutons une méthode de contrôleur avec [Authorize] d'attribut, seuls les utilisateurs authentifiés peuvent accéder à l'contrôleurs.

J'ai développé une ASP.NET application MVC sans décoration contrôleurs [Authorize] d'attribut. Ce que j'ai observé est, si j'en œuvre du mécanisme d'authentification correctement dans mon application en utilisant le web.config ou d'une autre façon, pas de place, je peux accéder à l'URL {controller}/{action}/{id} d'une méthode d'action.

Système toujours demander pour la connexion. Cela signifie que mon Contrôleurs sont garantis. Ma question est la suivante, quand je peux assurer la sécurité de mes contrôleurs sans l'aide d' [Authorize] d'attribut, alors quel est le besoin réel de celui-ci?

92voto

BobRock Points 1664

Le vrai pouvoir vient de la compréhension et de l'implémentation du fournisseur d'adhésion avec le fournisseur de rôle. Vous pouvez affecter des utilisateurs à des rôles et selon cette restriction, vous pouvez appliquer différents rôles d'accès pour différents utilisateurs aux actions du contrôleur ou au contrôleur lui-même.

  [Authorize(Users = "Betty, Johnny")]
 public ActionResult SpecificUserOnly()
 {
     return View();
 }
 

ou vous pouvez restreindre selon le groupe

 [Authorize(Roles = "Admin, Super User")]
public ActionResult AdministratorsOnly()
{
    return View();
}
 

17voto

Alex Vallejo Points 179

À l'aide de [Authorize] attributs peuvent aider à prévenir les failles de sécurité dans votre application. La façon dont MVC gère les URL (c'est à dire de routage à un contrôleur plutôt que vers un fichier), il est difficile de réellement sécuriser le tout via le web.fichier de configuration.

Lire la suite ici: http://blogs.msdn.com/b/rickandy/archive/2012/03/23/securing-your-asp-net-mvc-4-app-and-the-new-allowanonymous-attribute.aspx

12voto

m0s Points 2183

Il existe parce qu'il est plus pratique à utiliser, il est aussi un ensemble différent de l'idéologie à l'aide d'attributs de la marque de l'autorisation des paramètres plutôt que de configuration xml. Il n'était pas destiné à battre des fins générales de config ou de toute autre autorisation de cadres, juste MVC de la façon de faire. Je dis cela, car il semble que vous êtes à la recherche d'un élément technique avantages qui sont probablement non... juste superbe commodité.

BobRock déjà la liste des avantages. Juste pour ajouter à sa réponse, un autre scénarios sont que vous pouvez appliquer cet attribut à l'ensemble du contrôleur, et pas seulement les actions, vous pouvez également ajouter différentes rôle d'autorisation de paramètres à des actions différentes dans le même contrôleur de mélanger et assortir.

9voto

frennky Points 5009

À l'aide de Authorize attribut semble plus pratique et se sent plus à l' 'MVC voie". Comme pour les avantages techniques il y a quelques.

Un scénario qui me vient à l'esprit c'est quand vous êtes à l'aide de mise en cache de sortie de votre application. Autoriser l'attribut gère très bien.

Une autre serait de l'extensibilité. L' Authorize attribut est juste de base de la boîte de filtre, mais vous pouvez remplacer ses méthodes et faire un peu de pré-autoriser les actions comme l'exploitation forestière, etc. Je ne suis pas sûr de savoir comment vous pouvez faire cela par le biais de la configuration.

5voto

Erik Funkenbusch Points 53436

Un avantage est que vous compilez l'accès dans l'application, donc il ne peut pas être accidentellement modifié par quelqu'un modifiant le Web.config.

Cela peut ne pas être un avantage pour vous et pourrait être un inconvénient. Mais pour certains types d'accès, cela peut être préférable.

De plus, je trouve que les informations d'autorisation dans le Web.config le polluent et rendent plus difficile la recherche de choses. Donc, à certains égards, sa préférence, dans d'autres, il n'y a pas d'autre moyen de le faire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X