Asp.net l'authentification de formulaires avec des rôles


l'authentification par Formulaires ne permet pas de rôles d'authentification. Cet article explique comment mettre en œuvre. & nbsp

de Base de l'authentification de formulaires

authentification basée sur les Formulaires dans ASP.NET est tout à fait utile. & nbsp Plutôt que d'écrire notre propre processus d'authentification, il suffit simplement de changer le web.config sous système.web comme....


& nbsp & nbsp & nbsp & nbsp name='MyWebsiteCookieName'
& nbsp & nbsp & nbsp loginUrl='/Login.aspx'
& nbsp & nbsp & nbsp protection=''
& nbsp & nbsp & nbsp timeout='180'
& nbsp />

  • Le mode d'authentification est défini pour les Formulaires.
  • UNE URL est fourni de manière à ce que ASP.NET sait où rediriger les personnes qui ont besoin de se connecter.
  • Un délai d'expiration est indiquée en minutes. & nbsp C'est & nbsp 'le temps depuis la dernière demande', pas la 'le temps depuis l'ouverture de session'. & nbsp Si une connexion est indiqué persistantes (décrit plus loin) ce paramètre est ignoré.
  • Une méthode de protection est spécifié pour le cookie.

Ensuite, j'ai voulu spécifier un dossier dont l'accès est restreint aux personnes qui ont ouvert une session. & nbsp Pour ce faire, j'ai entré le code suivant dans le web.fichier de configuration (en dessous de )...


& nbsp
& nbsp & nbsp & nbsp
& ! & ! & ! & ! & nbsp
& nbsp & nbsp & nbsp

& nbsp

Ceci dit ASP.NET que le chemin d'accès 'Membres' (le plomb est toujours implicite) devrait refuser l'accès à l'ensemble des utilisateurs inconnus. & nbsp Lorsque quelqu'un tente d'accéder à une page dans /Membres qu'ils vont plutôt être redirigé vers la de login.aspx URL que vous avez indiquée dans le web.config.

Cette Connexion.aspx forme devraient demander à ce que les informations d'authentification (nom d'utilisateur/mot de passe par exemple) et de les valider. & nbsp une Fois qu'ils ont été validées, vous n'avez pas besoin d'exécuter le code suivant à l'utilisateur redirigé vers la page qu'ils ont été à l'origine de la tentative d'accès...

Système.Web.De sécurité.FormsAuthentication.RedirectFromLoginPage(userId, false)

Le nom d'utilisateur est l'identificateur unique de l'utilisateur actuel (nom d'utilisateur), et le deuxième paramètre Booléen indique si ce devrait être persistant cookie de sécurité, ou temporaire (avec la date d'expiration depuis la dernière demande de page), comme mentionné plus haut.

les Rôles

C'est à ce moment que j'ai réalisé que j'avais besoin d'une spéciale /dossier Admin. & nbsp Ce dossier ne doit être accessible qu'aux administrateurs, et non pas les utilisateurs normaux. & nbsp Pour cela, j'ai évidemment besoin des rôles dans le web.config (en dessous de ) comme si...


& nbsp
& nbsp
& nbsp & nbsp
& nbsp & nbsp
& nbsp

& nbsp

Note: l'ordre de L'autoriser/refuser est important. & nbsp Si vous refusez * (tous les utilisateurs) avant de permettre à l'Administrateur de rôle, personne n'aura accès au dossier.

Le problème ici est que vous obtenez seulement les rôles lorsque le mode d'authentification='Windows'. & nbsp Pour ce mode, chaque utilisateur doit disposer d'un compte d'utilisateur Windows valide sur le serveur. & nbsp Pas une bonne solution.

Heureusement, j'ai trouvé un article intéressant sur MSDN. & nbsp Lorsque vous authentifier votre utilisateur dans la Connexion.aspx formulaire, vous devez ensuite travailler sur les rôles auxquels appartient l'utilisateur...

si (l'auteur.IsAdministrator)
& nbsp rôles = new string[] {'Admin', 'Membre'}
else
& nbsp rôles = new string[] {'Membre'}

//1 heure de glissement heure d'expiration
Cache.Ajouter(l'auteur.Id unique, les rôles, null, DateTime.MaxValue,
plage de Temps.FromHours(1), CacheItemPriority.Dessous de la normale, null)

j'ai créé un tableau de chaîne de tenir le rôle que l'utilisateur possède. & nbsp ceux-ci sont ensuite stockées & nbsp dans l'Application[] collection pour des raisons de performances, sinon on aurait du avoir un DB d'accès chaque fois que nous voulions obtenir le courant rôles de l'utilisateur.

Maintenant, parce que les Formes d'authentification n'a pas de notion de Rôles de ces rôles n'ira jamais dans le courant de l'utilisateur cookie. & nbsp nous devons Donc déterminer ce que ces rôles sont chaque fois qu'une authentification est exécutée. & nbsp Pour cela, nous devons aller dans le global.asax fichier...

protected void Application_AuthenticateRequest(
& nbsp Object sender, EventArgs e)
{
& nbsp si (HttpContext.Actuel.L'utilisateur != null)
& nbsp {
& nbsp si (HttpContext.Actuel.De l'utilisateur.L'identité.AuthenticationType != 'Formulaires')
& nbsp & nbsp throw new Exception('Seuls les formulaires d'authentification est pris en charge, pas'
& ! & ! & ! & nbsp HttpContext.Actuel.De l'utilisateur.L'identité.AuthenticationType)

& nbsp Système.De sécurité.Principal.L'identité userId =
& nbsp & nbsp & nbsp HttpContext.Actuel.De l'utilisateur.Identité

& nbsp //Ne nous ont certains rôles pour récupérer? & nbsp Si oui, remplacez l'utilisateur de l'objet
& nbsp si (Application[userId.Nom] != null)
& nbsp & nbsp HttpContext.Actuel.Utilisateur = new System.De sécurité.Principal.GenericPrincipal(
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp userId (string[]) Cache[userId.Nom]
& nbsp & nbsp )
& nbsp }//l'utilisateur != null
}

Cette routine vérifie que l'utilisateur actuel != la valeur null. & nbsp Cela signifie que la page est dans un endroit protégé. & nbsp Si c'est le cas, alors nous utilisons le nom d'utilisateur comme la clé du Cache[] collection pour trouver une liste de rôles. & nbsp Si ces rôles, on réaffecter l'Utilisateur courant avec un objet, nous créons nous-mêmes, un objet qui contient une liste de rôles.

Conclusion

POUR ASP NET DÉVELOPPEMENT, basé sur le rôle de la sécurité est très utile dans les applications web. & nbsp Avec quelques simples lignes de code, il est possible de mettre en œuvre en fonction des rôles de sécurité pour les utilisateurs sans connexion Windows valide.









Asp.net l'authentification de formulaires avec des roles


Asp.net l'authentification de formulaires avec des roles : Plusieurs milliers de conseils pour vous faciliter la vie.


l'authentification par Formulaires ne permet pas de roles d'authentification. Cet article explique comment mettre en œuvre. & nbsp

de Base de l'authentification de formulaires

authentification basee sur les Formulaires dans ASP.NET est tout a fait utile. & nbsp Plutot que d'ecrire notre propre processus d'authentification, il suffit simplement de changer le web.config sous systeme.web comme....


& nbsp & nbsp & nbsp & nbsp name='MyWebsiteCookieName'
& nbsp & nbsp & nbsp loginUrl='/Login.aspx'
& nbsp & nbsp & nbsp protection=''
& nbsp & nbsp & nbsp timeout='180'
& nbsp />

  • Le mode d'authentification est defini pour les Formulaires.
  • UNE URL est fourni de maniere a ce que ASP.NET sait ou rediriger les personnes qui ont besoin de se connecter.
  • Un delai d'expiration est indiquee en minutes. & nbsp C'est & nbsp 'le temps depuis la derniere demande', pas la 'le temps depuis l'ouverture de session'. & nbsp Si une connexion est indique persistantes (decrit plus loin) ce parametre est ignore.
  • Une methode de protection est specifie pour le cookie.

Ensuite, j'ai voulu specifier un dossier dont l'acces est restreint aux personnes qui ont ouvert une session. & nbsp Pour ce faire, j'ai entre le code suivant dans le web.fichier de configuration (en dessous de )...


& nbsp
& nbsp & nbsp & nbsp
& ! & ! & ! & ! & nbsp
& nbsp & nbsp & nbsp

& nbsp

Ceci dit ASP.NET que le chemin d'acces 'Membres' (le plomb est toujours implicite) devrait refuser l'acces a l'ensemble des utilisateurs inconnus. & nbsp Lorsque quelqu'un tente d'acceder a une page dans /Membres qu'ils vont plutot etre redirige vers la de login.aspx URL que vous avez indiquee dans le web.config.

Cette Connexion.aspx forme devraient demander a ce que les informations d'authentification (nom d'utilisateur/mot de passe par exemple) et de les valider. & nbsp une Fois qu'ils ont ete validees, vous n'avez pas besoin d'executer le code suivant a l'utilisateur redirige vers la page qu'ils ont ete a l'origine de la tentative d'acces...

Systeme.Web.De securite.FormsAuthentication.RedirectFromLoginPage(userId, false)

Le nom d'utilisateur est l'identificateur unique de l'utilisateur actuel (nom d'utilisateur), et le deuxieme parametre Booleen indique si ce devrait etre persistant cookie de securite, ou temporaire (avec la date d'expiration depuis la derniere demande de page), comme mentionne plus haut.

les Roles

C'est a ce moment que j'ai realise que j'avais besoin d'une speciale /dossier Admin. & nbsp Ce dossier ne doit etre accessible qu'aux administrateurs, et non pas les utilisateurs normaux. & nbsp Pour cela, j'ai evidemment besoin des roles dans le web.config (en dessous de ) comme si...


& nbsp
& nbsp
& nbsp & nbsp
& nbsp & nbsp
& nbsp

& nbsp

Note: l'ordre de L'autoriser/refuser est important. & nbsp Si vous refusez * (tous les utilisateurs) avant de permettre a l'Administrateur de role, personne n'aura acces au dossier.

Le probleme ici est que vous obtenez seulement les roles lorsque le mode d'authentification='Windows'. & nbsp Pour ce mode, chaque utilisateur doit disposer d'un compte d'utilisateur Windows valide sur le serveur. & nbsp Pas une bonne solution.

Heureusement, j'ai trouve un article interessant sur MSDN. & nbsp Lorsque vous authentifier votre utilisateur dans la Connexion.aspx formulaire, vous devez ensuite travailler sur les roles auxquels appartient l'utilisateur...

si (l'auteur.IsAdministrator)
& nbsp roles = new string[] {'Admin', 'Membre'}
else
& nbsp roles = new string[] {'Membre'}

//1 heure de glissement heure d'expiration
Cache.Ajouter(l'auteur.Id unique, les roles, null, DateTime.MaxValue,
plage de Temps.FromHours(1), CacheItemPriority.Dessous de la normale, null)

j'ai cree un tableau de chaîne de tenir le role que l'utilisateur possede. & nbsp ceux-ci sont ensuite stockees & nbsp dans l'Application[] collection pour des raisons de performances, sinon on aurait du avoir un DB d'acces chaque fois que nous voulions obtenir le courant roles de l'utilisateur.

Maintenant, parce que les Formes d'authentification n'a pas de notion de Roles de ces roles n'ira jamais dans le courant de l'utilisateur cookie. & nbsp nous devons Donc determiner ce que ces roles sont chaque fois qu'une authentification est executee. & nbsp Pour cela, nous devons aller dans le global.asax fichier...

protected void Application_AuthenticateRequest(
& nbsp Object sender, EventArgs e)
{
& nbsp si (HttpContext.Actuel.L'utilisateur != null)
& nbsp {
& nbsp si (HttpContext.Actuel.De l'utilisateur.L'identite.AuthenticationType != 'Formulaires')
& nbsp & nbsp throw new Exception('Seuls les formulaires d'authentification est pris en charge, pas'
& ! & ! & ! & nbsp HttpContext.Actuel.De l'utilisateur.L'identite.AuthenticationType)

& nbsp Systeme.De securite.Principal.L'identite userId =
& nbsp & nbsp & nbsp HttpContext.Actuel.De l'utilisateur.Identite

& nbsp //Ne nous ont certains roles pour recuperer? & nbsp Si oui, remplacez l'utilisateur de l'objet
& nbsp si (Application[userId.Nom] != null)
& nbsp & nbsp HttpContext.Actuel.Utilisateur = new System.De securite.Principal.GenericPrincipal(
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp userId (string[]) Cache[userId.Nom]
& nbsp & nbsp )
& nbsp }//l'utilisateur != null
}

Cette routine verifie que l'utilisateur actuel != la valeur null. & nbsp Cela signifie que la page est dans un endroit protege. & nbsp Si c'est le cas, alors nous utilisons le nom d'utilisateur comme la cle du Cache[] collection pour trouver une liste de roles. & nbsp Si ces roles, on reaffecter l'Utilisateur courant avec un objet, nous creons nous-memes, un objet qui contient une liste de roles.

Conclusion

POUR ASP NET DEVELOPPEMENT, base sur le role de la securite est tres utile dans les applications web. & nbsp Avec quelques simples lignes de code, il est possible de mettre en œuvre en fonction des roles de securite pour les utilisateurs sans connexion Windows valide.


Asp.net l'authentification de formulaires avec des rôles

Asp.net l'authentification de formulaires avec des rôles : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation