2016-12-01 38 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