2010-09-15 9 views
7

Je crée mon propre site Web et blog et je veux pour la première fois juste moi dans la base de données (mon nom et mot de passe) et peut-être plus tard une inscription pour les autres, mais d'abord administration avec autorisation. Je ne veux pas utiliser l'adhésion de MS. Je veux essayer de créer le mien dès le début donc je cherche un guide pour les débutants mais j'ai trouvé de grands guides avec des rôles, des droits. Je veux juste un petit exemple avec vérifier le nom d'utilisateur, mot de passe dans la base de données avec les données de connexion. Merci pour l'aide LiborASP.NET MVC adhésion personnalisée pour les débutants

+0

Salut, avez-vous déjà choisi un moyen d'aller à la base de données? (cadre d'entité, linq2sql, ado.net?) – Michel

Répondre

5

Même si vous ne voulez pas utiliser la composition et le rôle magasin de données de fournisseur, vous pouvez toujours utiliser l'authentification. Croyez-moi, c'est beaucoup plus facile que de construire le vôtre. Voici comment cela fonctionne:

Nous dirons que vous avez déjà configuré votre stockage utilisateur pour récupérer le nom d'utilisateur et leur mot de passe. Par souci de simplicité, je vais prétendre que vous avez une classe statique appelée DataLayer qui contient vos méthodes de récupération de données pour extraire des informations de la base de données (ou du stockage que vous utilisez).

Vous devez d'abord avoir un moyen de laisser l'utilisateur se connecter. Configurez donc une page avec les champs Nom d'utilisateur et Mot de passe. Puis, dans la méthode d'action que les postes de page pour configurer une rapide instruction if:

if (DataLayer.UserExists(userModel.Username)) 
    { 
     User userFromDB = DataLayer.GetUser(userModel.Username); 
     if (userFromDB.Password == userModel.Password) 
     { 
       FormsAuthentication.SetAuthCookie(userFromDB.Username, checkBoxRememberMe.Checked); 
       //Use userFromDB as the username to authenticate because it will 
       //preserve capitalization of their username the way they entered it 
       //into the database; that way, if they registered as "Bob" but they 
       //type in "bob" in the login field, they will still be authenticated 
       //as "Bob" so their comments on your blogs will show their name 
       //the way they intended it to. 

       return "Successfully logged in!"; 
     } 
    } 

    return "Invalid username or password."; 

Maintenant qu'ils sont authentifiées, vous pouvez simplement utiliser Page.User.Identity.IsAuthenticated dans votre code pour savoir s'ils sont connectés en à ceci:.

if (User.Identity.IsAuthenticated) 
{ 
    DataLayer.PostBlogComment(User.Identity.Name, commentBody); 
    //Then in your controller that renders blog comments you would obviously 
    //have some logic to get the user from storage by the username, then pull 
    //their avatar and any other useful information to display along side the 
    //blog comment. This is just an example. 
} 

en outre, vous pouvez verrouiller des méthodes d'action entières ou même des contrôleurs entiers aux utilisateurs authentifiés par le fournisseur d'authentification des formulaires. Tout ce que vous avez à faire est d'ajouter des balises comme celles-ci à vos méthodes/contrôleurs action:

[Authorize] 
public ActionResult SomeActionMethod() 
{ 
    return View(); 
} 

L'attribut [Authorize] empêche les utilisateurs qui ne sont pas connectés d'avoir accès à cette méthode d'action et il les rediriger vers votre page de connexion. Vous pouvez utiliser ce même attribut pour filtrer les rôles si vous utilisez le fournisseur de rôles intégré.

[Authorize(Roles="Admin, SalesReps")] 
public ActionResult SomeActionMethod() 
{ 
    return View(); 
} 

Ces attributs peuvent également être ajoutés au-dessus de la classe de contrôleur pour l'appliquer est logique à l'ensemble du contrôleur.

EDIT: Pour connecter un utilisateur tout ce que vous devez faire est d'appeler FormsAuthentication.SignOut();

1

Hey @Bibo, bon pour ne pas choisir les fournisseurs d'adhésion. Je pense qu'un UserService ou similaire qui fournit des méthodes pour créer, authentifier les utilisateurs et quelques autres méthodes devrait suffire. À titre de suggestion, utilisez un hachage de mot de passe et un mot de passe pour le mot de passe de l'utilisateur. Here est un bon lien à regarder. Jetez aussi un oeil à this answer que j'ai donné il y a quelque temps.

Bonne chance!

EDIT: Le paramètre rememberMe doit être nommé keepMeSignedIn à la place.

+0

Merci pour asnwer mais je ne peux rien trouver ce qui peut m'aider. Pouvez-vous lier un article à ce sujet? –

+1

CodeCampServer http://codecampserver.codeplex.com/ est un exemple d'application qui implémente ce que vous cherchez. – uvita

1

Cet article sur l'authentification par formulaire vous donne beaucoup d'informations pour créer votre propre système de sécurité simple, en particulier le bit à propos de FormsAuthenticationTicket.

http://support.microsoft.com/kb/301240