2016-12-01 22 views
0

我了解我在做登录功能的方式不安全。但因为我是新手,所以我不想先深入研究,而是首先以最简单和最基本的方式进行。在MVC中使用RavenDB的简单登录函数

到目前为止,我做了什么,我有一个管理模式

public class Admin 
{ 
    public string AdminUsername { get; set; } 
    public string Password { get; set; } 
} 

我有2次即AdminRegister.cshtmlAdminLogin.cshtml 我已经完成了注册部分,我知道密码不应该存储在数据库和密码散列中。但就目前而言,我只想以基本的方式完成登录功能。在控制器

其各自的行动方法是如下

public ActionResult AdminRegister(Admin model) 
    { 
     using (var store = new DocumentStore 
     { 
      Url = "http://localhost:8080/", 
      DefaultDatabase = "foodfurydb" 
     }) 
     { 
      store.Initialize(); 

      using (var session = store.OpenSession()) 
      { 
       session.Store(model); 
       session.SaveChanges(); 
      } 
     } 
     return RedirectToAction("Home"); 
    } 

[HttpPost] 
public ActionResult AdminLogin(Admin model) 
    { 
     Admin login = new Admin(); 
     using (var store = new DocumentStore 
     { 
      Url = "http://localhost:8080/", 
      DefaultDatabase = "foodfurydb" 
     }) 
     { 
      store.Initialize(); 

      using (var session = store.OpenSession()) 
      { 
       var adminInput = session 
        .Query<Admin>() 
        .Where(u => u.AdminUsername.Equals(model.AdminUsername) && u.Password.Equals(model.Password)); 

       if (adminInput != null) 
       { 

       } 
      } 
     } 
     return View(); 
    } 

对于登录的一部分,我认为我应该查询检查与特定的用户名和密码的用户是否在DB或不存在。然后,我卡住了,不知道如何比较登录输入和数据库中的数据!感谢有人引导我的人!只是一个简单的,但!非常感谢你。


了解用户是否存在第一

var count = session 
       .Query<Admin>() 
       .Where(u => u.AdminUsername == model.AdminUsername); 

if (count > 0) 
       { 
        return RedirectToAction("AddRestaurant"); 
       } 
       else 
       { 
        // user exist in db 
        return RedirectToAction("Home"); 
       } 

我设法找出登录字段的用户名是否在DB或不存在。如果是,它将登录,否则它将停留在主页上。但直到这个阶段,我还没有想到如何验证密码。感谢有人能指导我做到这一点。

回答

0

让我们完全避免以纯文本存储密码。

我们首先通过加载该用户的文件开始:

var adminInput = session 
    .Query<Admin>() 
    .Where(u => u.AdminUsername == model.AdminUsername) 
    .FirstOrDefault(); 

请注意,我使用FirstOrDefault实际执行查询,所以我们需要的结果。

然后,您检查用户是否存在,如果他确实存在,则需要比较数字。

看到这篇文章如何做到这一点妥当:How to hash a password