2011-09-07 1 views
1

Je suis assez nouveau à C# et RavenDB, alors s'il vous plaît excusez mon manque de compréhension.RavenDB Interroger pour vérifier le nom d'utilisateur et mot de passe

J'ai actuellement une application Windows Form. Dans l'un des formulaires, j'ai deux zones de texte et un bouton. Ces deux zones de texte servent d'entrées de nom d'utilisateur et de mot de passe et le bouton est évidemment là pour que l'utilisateur puisse se connecter. Lorsque l'utilisateur clique sur le bouton, une méthode est appelée et enregistre le contenu des deux entrées dans deux variables de chaîne.

Pour le moment, dans ma base de données RavenDB, j'ai créé deux exemples de nom d'utilisateur et de mot de passe.

Comment vérifier de manière appropriée si le nom d'utilisateur et le mot de passe donnés par l'utilisateur existent dans la base de données.

Toute aide est vraiment appréciée.

Répondre

6

Il y a deux façons de répondre à cette question.

a) Vous pouvez interroger pour plusieurs propriétés en utilisant le fournisseur Linq

session.Query<User>().Where(user=> user.Name = username && user.Password = pass).ToList(); 

b) Le problème est que cela suppose que vous stockez le mot de passe en texte brut dans la base de données, que vous devriez jamais faire. Vous pouvez voir comment nous avons implémenté que dans l'exemple d'application de RavenDB de RaccoonBlog:

https://github.com/ayende/RaccoonBlog/blob/master/src/RaccoonBlog.Web/Models/User.cs

https://github.com/ayende/RaccoonBlog/blob/master/RaccoonBlog.Web/Areas/Admin/Controllers/LoginController.cs

3

En bonnes pratiques de sécurité, vous ne les mots de passe stockez pas du tout, plutôt que vous vous stockez de mot de passe hacher.

Pour enregistrer votre mot de passe

  1. Lire les valeurs sur le serveur et générer un code de hachage du mot de passe. Vous devez utiliser les fonctions de chiffrement pour générer hachage (par exemple via SHA256)

  2. Magasin document Raven DB de type utilisateur avec son nom d'utilisateur et hashed mot de passe

Pour vérifier si l'utilisateur avec le passé les informations d'identification est dans la base de données

  1. Interrogation Raven DB et recherchez l'utilisateur avec le nom donné et hachage de mot de passe.

Exemple de code

var user = session.Query<User>() 
    .Where(u => u.UserName == "Alice" && u.HashedPassword == "hashPwd"); 
+0

Je ne suis pas sûr de savoir comment se lancer dans ce cas. J'ai une classe appelée: UserLogin.cs et il y a deux propriétés; Nom d'utilisateur et mot de passe. À l'heure actuelle, il existe deux UserLogins, chacun avec un nom d'utilisateur et un mot de passe. Que dois-je faire exactement dans ce cas pour que tout fonctionne? – Subby

+0

@Subby, vérifiez les liens affichés par Ayende.Vous devriez avoir deux classes, la première contiendra des données (votre UserLogin dans la mesure où je l'ai, mieux le renommer en User) et la seconde qui fait réellement l'authentification, comme LoginController – oleksii

Questions connexes