2011-12-21 2 views
0

내 프로젝트에서 로그인을 구현합니다.
페이지 login.aspx 페이지에는 다음이 포함web.config와 관련없는 표준 로그인을 만드는 방법은 무엇입니까?

<asp:Login ID="MainLogin" runat="server" onloggingin="MainLogin_LoggingIn"></asp:Login> 

서버 측에서이 페이지 : 내가 세션 변수에 쓰기 나중에 필요할

protected void MainLogin_LoggingIn(object sender, LoginCancelEventArgs e) 
{ 
    if (FormsAuthentication.Authenticate(MainLogin.UserName, MainLogin.Password)) 
    { 
     FormsAuthentication.RedirectFromLoginPage(MainLogin.UserName, MainLogin.RememberMeSet); 
     if (FormsAuthentication.Authenticate(MainLogin.UserName, MainLogin.Password)) 
     { 
      SqlConnection myConnection = new SqlConnection(DBConnection.GetConnectionString()); 
      SqlCommand myCommand = new SqlCommand("SELECT * FROM Users WHERE [email protected] and [email protected]", myConnection); 
      myCommand.Parameters.AddWithValue("login", MainLogin.UserName); 
      myCommand.Parameters.AddWithValue("pass", MainLogin.Password); 
      myCommand.Connection.Open(); 
      SqlDataReader Reader = myCommand.ExecuteReader(); 
      while (Reader.Read()) 
      { 
       Session["curUserRole"] = Reader["role"].ToString(); 
       Session["curUserLogin"] = MainLogin.UserName; 
       Server.Transfer(Request.Url.LocalPath); 
       FormsAuthentication.RedirectFromLoginPage(MainLogin.UserName, MainLogin.RememberMeSet); 
       return; 
      } 
      //Reader.Close(); 
      //myCommand.Connection.Close(); 
      //myConnection.Close();      
     } 
     else { 

     }   
    } 

변수를. Web.config의에 나는이 :

<authentication mode="Forms"> 
     <forms loginUrl="Login.aspx"> 
     <credentials passwordFormat="Clear"> 
      <user name="Admin" password="sa" /> 

     </credentials>   
     </forms> 
    </authentication> 
    <authorization> 
     <allow roles="Admin"/> 
     <deny users="?"/> 
    </authorization> 

그래서 내가 로그인 입력 - "관리자"를하고 통과 - 항목의 사용자를 찾을 경우 "SA는"다음은 Web.config의에 확인,이 데이터베이스에이 항목을 확인, 데이터베이스에서 항목 만 확인하고로드 페이지가 하나라도 있으면 Start.log를 다시로드하십시오. 당신이 원하는 것처럼

+0

정말 확실하지 사용자 이름은 DB에서 암호화되고 일반 텍스트에서는 암호화되지 않은 단어를 전달합니다. 에서 기본 폼 인증을 시도하고있는 것입니다. 이것이 맞습니다. 또한 세션 객체에 값을 할당하기 전에 DB 쿼리에서 반환 된 값이 있는지 확인하지 않습니다. 이것은 모두 우리가 모두 부정적인 가정이라고 가정합니다. – MethodMan

+0

Do 암호를 일반 텍스트로 저장하지 마십시오. 기본 제공 SqlMembershipProvider를 사용해야합니다. – SLaks

+0

지금 일반 텍스트로 암호화하고 있습니다. 나중에 해당 사용자 유형으로 DB에서 암호화 된 패스 또는 로그인을 관리 할 수 ​​있습니다. Bu 실제로 web.confog에 그 중 하나를 쓸 필요가 없습니다 –

답변

0

소리가 난다 회원 : 당신이 일을하려고하지만 그건 정말 당신이 구성 섹션을 암호화 살펴 보았다 사용자 이름 로그인을 확인하는 좋은 방법이 아니다 및 또는 저장하는 것을

http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

관련 문제