2016-12-01 1 views
0

나는 로그인 기능을하는 방식이 안전하지 않다는 것을 알고 있습니다. 그러나 나는 초보자이기 때문에 처음에는 너무 깊이 들어가기를 원하지 않으며 가장 간단하고 기본적인 방법으로 먼저하는 것을 선호합니다.간단한 로그인 MVC에서 RavenDB를 사용하여 기능

지금까지 내가 무슨 짓을했는지, 내가 관리 모델

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

이 난 등록 부분을 행한 즉 AdminRegister.cshtmlAdminLogin.cshtml 이 전망을 나는 암호가 대신 DB와 암호 해싱에 저장되어서는 안된다는 것을 알고 있습니다. 하지만 지금은 기본 기능으로 로그인 기능을 완성하고자합니다. 로그인의 경우

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에 여부 존재 여부를 확인하기 위해 쿼리해야한다고 가정합니다. 그리고 나서, 나는 막혔고 로그인 입력과 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

암호를 일반 텍스트로 저장하지 마십시오.

우리는 먼저 사용자의 문서를로드하여 시작합니다 : 나는 실제로 우리가 결과를해야합니다 쿼리를 실행하는 FirstOrDefault을 사용하고

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

참고.

그런 다음 사용자가 존재하는지 확인한 다음 사용자가 있는지 확인한 다음 번호를 비교해야합니다.

이 작업을 올바르게 수행하는 방법에 대한 설명을 참조하십시오. How to hash a password

관련 문제