2015-01-23 1 views
1

새 프로젝트를 만들 때 시작하는 기본 MVC 패키지를 사용하고 있습니다. 로그인 스크립트에이 코드를 추가했습니다. 제출 버튼을 클릭하면 로그인이 시도되고이 User.Identity.IsAuthenticated 작업을 수행 할 수 없습니다. 그래서 내가 가진 후에 특정 작업을 시작할 수 있습니다. 성공적으로 로그인SQL을 사용하여 MVC로 로그인

public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) 
    { 
     if (!ModelState.IsValid) 
     { 
      return View(model); 
     } 

     // This doesn't count login failures towards account lockout 
     // To enable password failures to trigger account lockout, change to shouldLockout: true 
     using (SqlConnection connection = new SqlConnection("server=server; database=db; user id=user; password=password")) 
     { 
      connection.Open(); 
      using (SqlCommand command = new SqlCommand("SELECT * FROM ACCOUNTS WHERE [UserName] = @param1 AND [PasswordField] = @param2 AND [Active] = 1", connection)) 
      { 
       command.Parameters.Clear(); 
       command.Parameters.AddWithValue("param1", model.UserName); 
       command.Parameters.AddWithValue("param2", model.Password); 
       SqlDataReader adapter = command.ExecuteReader(); 
       if (adapter.Read()) 
       { 
        var user = new ApplicationUser { UserName = model.UserName, Email = model.UserName }; 
        var result = await UserManager.CreateAsync(user, model.Password); 
        if (result.Succeeded) 
        { 
         await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false); 
        } 
       } 
       else 
       { 
        ModelState.AddModelError("", "Invalid login attempt."); 
        return View(model); 
       } 
      } 
      connection.Close(); 
      connection.Dispose(); 
      return RedirectToAction("Index", "Home", "Index"); 
     } 
    } 

을 나는 의미, 나는 그것이 믿을 수 호출 할 수도있을 것 같군요

public ActionResult IsAuthenicated() 
{ 
    if (User.Identity.IsAuthenticated) 
    { 
     //go to new screen 
    } 
    else 
    { 
     //return back to login screen 
    } 
} 
+0

어떤 버전의 MVC를 사용하고 있습니까? 또한 ASPNet Identity와 같은 것을 사용하는 대신 자신의 인증 시스템을 구현하려는 이유가 있습니까? –

+0

@BrendanGreen. 나는 ASPNet Identity를 사용하고 싶지만 내 문제는 데이터베이스에 링크하여 내 테이블에 대한 로그인을 확인할 수있는 방법을 모른다는 것입니다. –

+0

여기에서 시작하십시오 : http://www.asp.net/identity –

답변

0

같은 것을하고 싶지 그는이 기록되어있는 경우 :. 당신은 아마 로그인 할 수 있습니다

.

반면에 전혀 보이지 않는 것 같습니다 : SQL 쿼리는 암호를 일반 텍스트로 저장한다는 의미입니다. 최소한 hash and salt all passwords이어야합니다.

ASP.Net 멤버쉽 (이전은 작동하지만 여전히 작동 중) 또는 ASP.Net 신원 (신규)과 같은 많은 플러그 가능 인증 시스템이 있습니다.

+0

사용자가 완전히 로그인하게하려면 무엇이 필요합니까? 마침내 로그인하는 동안 예외 나 오류가 더 이상 발생하지 않아 데이터베이스를 확인하고 해당 사용자 이름과 비밀번호가 맞는지 확인한 후 해당 사용자를 올바른 로그인 사용자로 추가하고 서명합니다. (User.Identity.IsAuthenticated)가 true이고 작동하지 않는 경우 필요한 단추를 클릭합니다. –