Question

J'ai un site Web ASP.Net 2.0 avec SQL Server comme base de données et C # 2005 comme langage de programmation. Le site Web est presque terminé et tous les liens fonctionnent bien. Mais je veux empêcher les utilisateurs normaux d'ouvrir quelques pages. Lorsqu'un utilisateur clique sur ces liens spécifiques, une autre page s'ouvre contenant un contrôle de connexion ASP. L'utilisateur doit fournir un ID utilisateur et un mot de passe valides pour afficher les liens pointant vers les pages restrictives. Mais étant un débutant, je ne sais pas comment tirer parti de toute la puissance du contrôle de connexion ASP. En effet, si un utilisateur apprend à connaître l'URL exacte des pages à accès restreint, il peut alors contourner le contrôle de connexion et accéder directement à ces pages en saisissant l'URL dans la barre d'adresse. Je veux empêcher cela. Si l'utilisateur tape l'URL directement dans la barre d'adresse, je souhaite que la page vérifie elle-même si l'utilisateur a été validé via le contrôle de connexion et affiche la page ou pointez l'utilisateur sur la page de connexion.

Comment implémenter cette fonctionnalité?

Merci.

Lalit Kumar Barik

Était-ce utile?

La solution

Vous devez vérifier l'état de connexion de l'utilisateur à chaque événement Page_Load () sur les pages qui doivent contrôler les autorisations, ou simplement placer le code d'authentification dans un fichier CS qui sera inclus dans tous les autres fichiers.

En fonction de l'architecture d'authentification choisie (utilisez simplement la variable de session ou créez un identifiant de session avec des cookies), vous devez adapter votre code en conséquence.

Le moyen le plus simple serait de gérer les connexions via l'objet de session. Lorsque l'utilisateur se connecte correctement avec les bonnes informations d'identification, vous pouvez définir Session [" connecté_en "] = true . Et à chaque événement Page_Load () des pages que vous souhaitez protéger, vous devez effectuer la vérification suivante.

Ajoutez ce code au début de votre fonction Page_Load ():

  if (Session["logged_in"] != null && (bool)Session["logged_in"] == true){
    Response.Write("I'm logged in!");
  }else{
    Response.Write("I'm not logged in.");
  }

N'oubliez pas que cela convient aux applications intranet simples, mais si vous souhaitez adopter des architectures de connexion plus sécurisées, renseignez-vous davantage sur le sujet, car vous ne pouvez pas vous amuser uniquement sur les variables de session, car les sessions peuvent être détournées. .

Autres conseils

Vous voudrez jeter un coup d'œil à emplacement . de la configuration Web.

Dans cette section, vous pouvez définir jusqu'au niveau de la page les droits d'accès. Ainsi, si les utilisateurs connaissaient l'URL des pages sécurisées, ASP.NET ne les laisserait pas entrer.

Vous ajouteriez donc quelque chose comme:

<location path="SecuredPage.aspx">
  <system.web>
     <authorization>
        <deny users="?"/>
     </authorization>
  </system.web>
</location>

Le "Refuser les utilisateurs ="? "" le bit indique "Refuser tous les utilisateurs anonymes".

Vous pouvez également le configurer pour n'autoriser que certains rôles, si vous les utilisez.

Vous trouverez plus d'informations sur la section Autorisation ici:

  

élément d'autorisation

Ceci est un aliment pour les services d’adhésion à ASP.Net. Consultez cet article et également la grande série sur 4GuysFromRolla.

L’appartenance vous permet de stocker les informations d’utilisateur / mot de passe utilisées, entre autres, par le contrôle Login. Associé à la configuration des autorisations, vous pourrez directement limiter l'accès à des pages spécifiques à des utilisateurs ou à des rôles spécifiques.

Vous aurez besoin d’un moyen de gérer les sessions de connexion pour chaque utilisateur. Voici quelques tutoriels qui pourraient vous aider:

http://www.codeproject.com/KB/session/NoCookieSessionLogin.aspx

http://www.dotnetspider.com /resources/5597-Handling-Session-for-Login-Logout.aspx

Je créerais une table de rôle pour les utilisateurs. Tout le monde qui se connecte obtient le rôle «normal». Les utilisations spéciales que vous désignez en fonction de leurs informations d'identification se voient attribuer des rôles pour accéder à une page ou à une section de votre site Web. Certains utilisateurs (comme vous) auraient un rôle d’administrateur qui leur permettrait automatiquement d’accéder à tout.

Lancez une fonction appelée CheckIsInRoles ('Admin', 'Normal', 'WhateverRoleYouChoose') qui renvoie un booléen. Si true, charge la page; sinon, ne le faites pas.

Encore mieux, n’affichez pas de lien si vous n’avez pas le rôle qui convient.

Cela présente l'avantage supplémentaire que tout le monde se connecte une fois, puis accède à toutes les pages dont il a besoin sans avoir à se connecter à chaque fois.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top