2009-09-16 7 views
5

Je sais que cela peut sembler quelque chose qui est expliqué partout .. mais j'ai regardé beaucoup de vidéos asp.net/learn lire des articles - et il manque encore quelque chose qui explique comment tout cet "Adhésion" se lie. D'une part, il y a cette gestion intégrée des utilisateurs .net qui vous permet de créer des rôles, des utilisateurs, etc. D'autre part, obtenir cet utilisateur, le stocker (dans la session, etc.) semble une tâche étrange , d'après ce que j'ai lu, impliquant la création de vos propres objets «principaux», etc.Utilisateurs ASP.NET/Adhésion/MembershipUser/Sécurité/Principal/Profil ... AIDE

S'il y a quelqu'un là-bas qui a la compréhension et le temps, pourrait-il nous donner une brève explication de quoi est-ce avec tout ce. Peut-être comment ça se lie ... Comment puis-je utiliser un nom d'utilisateur/mot de passe pour voir si un compte existe, connectez-vous, vérifiez s'ils sont dans le bon rôle pour une action .. ou même obtenir tous les rôles que l'utilisateur fait partie de?

Je sais que cette question pourrait ne pas plaire aux personnes qui comprennent déjà bien les choses .net, mais ne répondez que si vous pouvez aider.

Merci beaucoup à l'avance. peteski

Répondre

6

Vous n'avez pas besoin de créer votre propre objet principal. Tout ce que vous pouvez faire est d'utiliser l'un des MembershipProvider prêts à l'emploi (ex: SQLMembershipProvider) pour gérer votre utilisateur et utiliser l'un des RoleProvider (ex: SQLRoleProvider) pour définir l'autorisation pour les utilisateurs, si nécessaire.

Pour obtenir l'utilisateur, vous ne devez pas le stocker dans la session. Utilisez simplement Page.User pour obtenir les informations de base de l'utilisateur actuel (nom, IsAuthenticated).

Pour vérifier si l'utilisateur si les informations d'identification de l'utilisateur sont corrects, vous pouvez utiliser

Membership.ValidateUser(username,password). 

Pour ouvrir une session, je vous suggère d'utiliser le contrôle de connexion fourni ASP.NET, mais vous pouvez vous le code propre connexion avec un peu plus de travail. Si vous utilisez l'authentification de formulaire, il est quelque chose comme:

if (Membership.ValidateUser(UsernameTextbox.Text, PasswordTextbox.Text)) 
    FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked); 
else 
    Msg.Text = "Login failed. Please check your user name and password and try again."; 

PS: L'exemple vient de MSDN

Enfin, pour vérifier si l'utilisateur peut effectuer une action, vous utilisez

RoleProvider.IsUserInRole(username,rolename) 

Vous peut également contrôler l'accès à une ressource (une page, un fichier, un dossier, etc.) par autorisation de configuration dans votre fichier web.config ex:

autorisation> < deny users = "?" /> < permettent rôles = "Administrateurs" /> < refuser aux utilisateurs = "*" /> </autorisation>

Hope this aide et est tombé libre de demander plus d'informations si on ne sait pas

Modifier

Pour répondre à votre commentaire, voici comment cela fonctionne:

page.L'utilisateur utilise un cookie d'authentification pour identifier l'utilisateur actuellement connecté. Ce cookie est automatiquement défini dans FormsAuthentication.RedirectFromLoginPage mais, si vous souhaitez simplement définir l'utilisateur actuel sans le rediriger, vous pouvez appeler manuellement FormsAuthentication.SetAuthCookie (nomUtilisateur, persistentCookie) où persistentCookie est une valeur booléenne indiquant si vous souhaitez que ce cookie soit permanent ou pas dans le navigateur.

Espérons qu'il clarifier la réponse originale

+0

Salut Martin, cela aide un peu - pratiquement. Bien que si je ne veux pas rediriger un utilisateur d'une page à l'autre .. Quelle est la méthode qui définit l'utilisateur Page.User (c'est-à-dire les enregistre). RedirectFromLoginPage fait-il cela? (L'intellisence ne le rend pas clair). Je cherchais aussi une explication de ce que fait chaque partie de l'adhésion (pour m'aider à le comprendre et à le consulter). Mais merci pour votre réponse! Très appréciée! – peteski

+0

J'ai maintenant découvert qu'en utilisant le FormsAuthentication.SetAuthCookie(); Je peux 'connecter l'utilisateur' .. Je redirige ensuite vers la même page où je peux ajouter de la logique pour gérer différents rôles, etc. – peteski