2012-07-31 4 views
2

J'utilise FormsAuthentication et ASP.NET Memberships and Roles dans mon projet ASP.NET. J'ai des fichiers aspx qui peuvent être consultés/accédés uniquement par des utilisateurs authentifiés. Je pense que je peux le faire en utilisant l'une des deux façons suivantes.Authentification dans ASP.NET à l'aide de FormsAuthentication

  1. Configuration du fichier web.config. Autoriser les utilisateurs ayant des rôles 'admin' et 'membres' à accéder à ces fichiers apsx, et refuser tous les autres utilisateurs anonymes.

  2. Dans événements Page_Load de ces fichiers APSX, juste vérifier si l'utilisateur est authentifié curent ou non à l'aide HttpContext.Current.User.Identity.IsAuthenticated

Je me demande si ces deux approches sont équivalentes ou non pour les fichiers APSX.

Répondre

1

Ils ne sont pas équivalents. La méthode 1. donne uniquement accès aux rôles "admin" et "membres". Si vous ajoutez un autre rôle, ils n'auront pas accès. La méthode 2 permet à tout utilisateur connecté d'accéder aux données.

Je pense que le moyen préféré est d'organiser les fichiers ASPX dans les répertoires en fonction des rôles qui devraient y accéder. Configurez ensuite l'accès sur les répertoires dans web.config.

+0

Pour la méthode 2, je peux vérifier si l'utilisateur a le rôle 'admin' ou 'membres' en utilisant HttpContext.Current.User.IsInRole. Est-ce maintenant l'équivalent de la méthode 1? –

+0

Oui, en vérifiant 'HttpContext.Current.User.IsInRole' rendrait ces méthodes équivalentes. –

0

Bonjour, vous devez distincte entre autorisation et authenticité

  1. "HttpContext.Current.User.Identity.IsAuthenticated" est:

  2. Authentification
  3. « Permettre aux utilisateurs ayant des rôles de admin 'et 'membres' »est: autorisation, après autorisation nous exécutons authentification

Vous pouvez lire cet article: http://www.duke.edu/~rob/kerberos/authvauth.html

L'authentification est le mécanisme par lequel les systèmes peuvent identifier leurs utilisateurs en toute sécurité. Les systèmes d'authentification fournissent une réponse aux questions:

Who is the user? 
Is the user really who he/she represents himself to be? 

systèmes d'autorisation fournissent des réponses aux questions suivantes:

Is user X authorized to access resource R? 
Is user X authorized to perform operation P? 
Is user X authorized to perform operation P on resource R? 
1

Comme mentionné d'autres, ce n'est pas équivalent. Cependant, même si vous modifiez "2." Pour vérifier les rôles, cette approche est pire lorsque vous introduisez un code personnalisé pour gérer quelque chose qui peut facilement être manipulé de manière standard.

Il faut aussi considérer une autre approche, où vous créez un séparé dossier, mettre vos pages restreintes et créer un web.config auxiliaire pour contenir:

... 
<system.web> 
    <authorization> 
     <allow roles="admin,members" /> 
     <deny users="*" /> 
    </authorization> 
</system.web> 

De cette façon, vous avez besoin d'autorisation de toutes les ressources dans le dossier , pages, styles, images.

Questions connexes