2013-09-01 11 views
5

chcę mieć dziennik w weryfikacji haseł w moich project.when użytkownik kliknie przycisk Zaloguj się kompilator idzie do tej metodyLog w procesie za pomocą Entity Framework 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 

} 

Jeśli robię coś wrong.Please mnie we właściwym kierunku Szukałem dużo w Internecie.Ale nie znaleziono samouczek do osiągnięcia tego przy użyciu struktury podmiotu.

+0

Co chcesz zrobić? Czy to służy do zmiany hasła użytkownika? – WannaCSharp

+0

weryfikacja no.Password, przed zalogowaniem się –

+1

Nie jestem pewien, dlaczego została ona odrzucona. Mała rada: rozważ nieco lepsze formatowanie kodu. Zobacz moją odpowiedź, aby dowiedzieć się, jak powinien wyglądać pod względem czytelności. – Kehlan

Odpowiedz

9

Właściwie nie potrzebujesz klucza podstawowego, aby dopasować użytkownika do bazy danych.

Możesz użyć swojej nazwy użytkownika (która powinna być unikatowa), aby zlokalizować swój rekord w bazie danych.

spróbować czegoś takiego:

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 
    } 
} 

również pod robi trochę badań na walidacji modelu, patrząc ModelState.IsValid jest dobry początek.

0

Powinno być modyfikowane tak ...

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

[Nie zgadzam się.] (Http://stackoverflow.com/a/1659107/2171490) – Kehlan

+0

powinieneś porównać z przy pobieranym obiekcie użytkownika pogoda jest zerowa lub nie. Tak więc użyj myUser zamiast używać użytkownika w klauzuli 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(); 
     } 
    } 
Powiązane problemy