2013-09-01 28 views
5

我想有登錄密碼驗證在登錄按鈕的編譯器我project.when用戶點擊過程進行到這種方法登錄使用實體框架asp.net的MVC

public ActionResult VerifyPassword(User user) 
{ 
    var givenPassword =user.Password; 
    var givenUserName=user.UserName; 
//now i need compare password 
    var myUser=db.User.Find(somevalue)//find user from database, 
    But how can i do this????Because somevalue needs to be a Primary Key 

} 

,如果我做的事情請將我指向正確的方向 我在Web上搜索了很多東西,但沒有找到使用實體框架完成此教程的教程。

+0

你到底想幹什麼?這是否用於更改用戶的密碼? – WannaCSharp

+0

密碼驗證,登錄前 –

+1

我不知道爲什麼這是downvoted。小小的建議:考慮更好地格式化你的代碼。查看我的答案,瞭解它在可讀性方面的外觀。 – Kehlan

回答

9

實際上,您並不需要主鍵來匹配數據庫中的用戶。

您可以使用他們的用戶名(應該是唯一的)在數據庫中查找他們的記錄。

嘗試這樣:

public ActionResult VerifyPassword(User user) 
{ 
    //The ".FirstOrDefault()" method will return either the first matched 
    //result or null 
    var myUser = db.Users 
     .FirstOrDefault(u => u.Username == user.Username 
        && u.Password == user.Password); 

    if(myUser != null) //User was found 
    { 
     //Proceed with your login process... 
    } 
    else //User was not found 
    { 
     //Do something to let them know that their credentials were not valid 
    } 
} 

也可以考慮做在模型驗證了一些研究,尋找到ModelState.IsValid是一個很好的開始。

0

應該修改這樣的...

public ActionResult VerifyPassword(User user) 
     { 
      //The ".FirstOrDefault()" method will return either the first matched 
      //result or null 
      User myUser = dbContext.Users.FirstOrDefault 
       (u => u.Username.Equals(user.Username) && u.Password.Equals(user.Password)); 

      if (myUser != null) 
      { 
       //User was found 
       //Proceed with your login process... 
      } 
      else //User was not found 
      { 
       //Do something to let them know that their credentials were not valid 
      } 
     } 
+0

[我不同意。](http://stackoverflow.com/a/1659107/2171490) – Kehlan

+0

您應該與檢索到的用戶對象天氣比較,它是否爲空。因此,使用myUser而不是在if子句中使用用戶 –

0
public ActionResult Login(StudentLogin sl) 
    { 
     if (sl.Email != null) 
     { 

      if (ModelState.IsValid) // this is check validity 
      { 
       StudentEntities1 se = new StudentEntities1(); 
       var v = se.StudentLogins.Where(a => a.Email.Equals(sl.Email) && a.Password.Equals(sl.Password)).FirstOrDefault(); 

       if (v != null) 
       { 
        Session["LogedUserID"] = v.Id.ToString(); 
        //Session["LogedUserFullname"] = v.FullName.ToString(); 
        return RedirectToAction("Success", "Student"); 
       } 

      } 
      return View(sl); 
     } 
     else 
     { 
      return View(); 
     } 
    }