0

Y a-t-il un moyen de restreindre l'accès aux pages sans le mode basé sur les rôles?Contrôle d'accès manuel dans ASP .Net

Essentiellement si l'utilisateur tente d'accéder à admin.aspx il redirige vers login.aspx&redirect_url=admin.aspx

\ puis, ils postback avec leurs pouvoirs et je leur donnerai un cookie de session et ainsi de suite.

Existe-t-il un exemple?

Merci

Edit:

Je ne peux pas utiliser la façon dont ASP.NET il fait parce que ma base de données a des employés avec les noms d'utilisateur et mots de passe. ASP crée son propre avec des rôles et tels

+0

qu'est-ce que cela veut dire "sans le construit dans la manière basée sur le rôle"? L'authentification par formulaire ne prend pas en charge? –

+0

Je ne peux pas utiliser la façon dont ASP.NET le fait car ma base de données a des employés avec des noms d'utilisateur et des mots de passe. ASP crée son propre avec des rôles et autres. – jmasterx

+1

Vous pouvez également utiliser l'autorisation par nom d'utilisateur; ce ne sont pas seulement des rôles. –

Répondre

1

D'abord, vous devez définir un cookie FormsAuthentication lors de la connexion. Donc, dans votre code, lors de la connexion réussie, vous pouvez définir le cookie avec:

FormsAuthentication.SetAuthCookie(theUsername, true); 

ou mieux encore, vous pouvez l'utiliser pour gérer le cookie et la redirection:

FormsAuthentication.RedirectFromLoginPage(theUsername, true); 

(vrai si vous vEUX cookie persistent)

le vous pouvez sécuriser le dossier admin en plaçant un fichier web.config dans ce dossier:

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
     <authorization> 
      <allow users="adminusername1,adminusername2"/> 
      <deny users="*"/> 
     </authorization> 
    </system.web> 
</configuration> 

Maintenant, quand quelqu'un frappe ce dossier d'administration et ils ne sont pas connectés, il les enverra automatiquement à login.aspx?ReturnUrl=admin.aspx

Une autre chose à considérer serait de mettre en œuvre votre propre RoleProvider. C'est beaucoup moins décourageant que vous ne le pensez.Si vous devez mettre des personnes dans des rôles (comme Admin), alors c'est une bonne idée.

0

Vous pouvez utiliser HttpContext.Session pour conserver les variables de session.

Lorsque vous mettez quelque chose à la session comme:

HttpContext.Current.Session["IsAuthenticated"] = "true" 

Asp.Net va créer cookies pour vous, si vous n'avez pas besoin de prendre soin à ce sujet. Le cookie expirera à la fin de la session. Vous pouvez utiliser votre méthode de connexion personnalisée et stocker dans la variable de session cet utilisateur est authentifié. Ensuite, à la page restreinte Vous venez de vérifier variable de session comme:

string isAuthenticated = HttpContext.Current.Session["IsAuthenticated"] 

Edit:

Si vous voulez utiliser l'autorisation Asp.Net et limiter la base d'accès sur le nom d'utilisateur, puis:

<authorization> 
    <allow users="John"/> 
    <deny users="*"/> 
</authorization> 

Prenez un coup d'oeil à Asp.Net site navigation ainsi où Vous pouvez utiliser les mêmes règles d'accès pour l'utilisateur.

Edit:

Si vous voulez authentifier auprès de votre base de données d'informations d'identification puis manière suggérée par MikeSmithDev est le chemin à parcourir. Create custom MembershipProvider ou utilisez FormsAuthentication methods.

+0

Mais je suppose que j'ai besoin de cookies si je veux une fonctionnalité "Keep Me Logged In", n'est-ce pas? – jmasterx

Questions connexes