2012-09-06 5 views
0

ASP.net 2.0 웹 응용 프로그램에서 C# 2005를 사용하여 로그인 유효성 검사를 구현하려고합니다. SQL Server 데이터베이스에는 LoginId, Password 및 Role 열이있는 "UserList"라는 테이블이 있습니다. 로그인 웹 폼은 LoginId와 비밀번호를 인증해야하며 해당 사용자/방문자에게 할당 된 역할에 따라 미리 정의 된 메뉴 옵션을 사용하여 특정 웹 폼으로 리디렉션해야합니다. 역할은 Admin, DEO, Accounts 또는 Member 일 수 있습니다. 어떻게 구현해야합니까? 모든로그인 유효성 검사 및 리디렉션

protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) 
    { 
     try 
     { 
      string uname = Login1.UserName.Trim(); 
      string password = Login1.Password.Trim(); 

      int flag = AuthenticateUser(uname, password); 

      if (flag == 1) 
      { 
       e.Authenticated = true; 
       Login1.DestinationPageUrl = "~/MenuAdmin.aspx"; 
      } 
      else if (flag == 2) 
      { 
       e.Authenticated = true; 
       Login1.DestinationPageUrl = "~/MenuDEO.aspx"; 
      } 
      else if (flag == 3) 
      { 
       e.Authenticated = true; 
       Login1.DestinationPageUrl = "~/MenuAccts.aspx"; 
      } 
      else if (flag == 4) 
      { 
       e.Authenticated = true; 
       Login1.DestinationPageUrl = "~/MenuMember.aspx"; 
      } 
      else 
      { 
       e.Authenticated = false; 
      } 
     } 

     catch (Exception) 
     { 
      e.Authenticated = false; 
     } 
    } 

private int AuthenticateUser(string uname, string password) 
    { 
     int bflag = 0; 
     string connString = ConfigurationManager.ConnectionStrings["LoginDemoConnString"].ConnectionString; 
     string strSQL = "Select * FROM UserList where ULoginId ='" + uname + "' AND UPassword ='" + password + "'"; 

     DataTable dt = new DataTable(); 
     SqlConnection m_conn; 
     SqlDataAdapter m_dataAdapter; 

     try 
     { 
      m_conn = new SqlConnection(connString); 
      m_conn.Open(); 
      m_dataAdapter = new SqlDataAdapter(strSQL, m_conn); 
      m_dataAdapter.Fill(dt); 
      m_conn.Close(); 
     } 

     catch (Exception ex) 
     { 
      dt = null; 
     } 

     finally 
     { 
      //m_conn.Close(); 
     } 

     if (dt.Rows.Count > 0) 
     { 
      if (dt.Rows[0][3].ToString() == "Administrator") 
       bflag = 1; 
      else if (dt.Rows[0][3].ToString() == "DEO") 
       bflag = 2; 
      else if (dt.Rows[0][3].ToString() == "Accts") 
       bflag = 3; 
      else 
       bflag = 4; 
     } 
     return bflag; 
    } 

답변

0

그럼 처음 엔 당신이에서 AuthenticateUser의 IFS를 제거하고 바로 ID를 반환받을 수 있도록 ID를 가진 SQL 테이블에서 각각의 역할을 생각 : 나는 다음과 같은 노력했다. 또는 실제 역할을 반환하고 Login1_Authenticate 함수에서이 데이터를 사용하여 작업을 수행 할 수도 있습니다.

int flag = AuthenticateUser(); 
    Login1.DestinationPageUrl = roles.ElementAt(flag).Value; 
: 당신은 그냥 그런 일을 쓸 수 있도록 키는 역할과 값이 사전을 사용할 경우 지금 당신은 또한 Login1_Authenticate 기능의 IFS를 제거 할 수 은 PAGEURL입니다
관련 문제