2013-01-09 31 views
-1

我做了一個web應用程序,我想在管理員和管理員的modcp管理員的admincp登錄。 這是一個登錄頁面代碼:登錄代碼重定向不起作用

protected void btnOk_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     string user_n = txtUser.Text; 
     string pass_n = txtPass.Text; 
     Int32 res = 0; 


     DAL.DAL log = new DAL.DAL(); 
     res = log.login_user_form(user_n, pass_n); 




     if (res == 1) 
     { 

      if (user_n == "admin") 
       { 
        Response.Redirect("manage/AdminPage.aspx"); 
       } 
     else 
     { 
      Response.Redirect("modcp/defult3.aspx"); 
     } 


     } 
     else 
     { 
      lblRes.Text = "error username or password"; 
     } 
    } 
    catch (Exception ex) 
    { 
     lblRes.Text = ex.ToString(); 
    } 


} 

和DAL層的代碼:

public Int32 login_user_form(String username, String password) 
{ 
    int res = 0; 
    con = new SqlConnection(strcon); 
    SqlCommand cmd = new SqlCommand("EXEC chek_user '" + username + "' , '" + password + "'", con); 

    try 
    { 
     con.Open(); 
     if (cmd.ExecuteScalar() == null) 
     { 
      res = 0; 
     } 

     else 
     { 
      res = 1; 
     } 

     con.Close(); 

    } 
    catch (SqlException) 
    { 
     throw; 
    } 

    return res; 
} 

,這是我的存儲過程:

@username nvarchar(50) , @password nvarchar(50) 
AS 
BEGIN 

SET NOCOUNT ON; 
    SELECT username_l1 , password_l1 
    FROM user_L1 
    WHERE username_l1 = @username AND password_l1 = @password 
END 

這個鱈頁login.aspx的在沒有這條線的工作中:

Response.Redirect("manage/AdminPage.aspx"); 

如果我清除該代碼,並寫:

txtPass.Visible = false; 
lblRes.Text = "mesesege"; 

也就是說工作corect但沒有Response.Redirect的,它不?

(我不知道如何對級別的訪問權限的工作絲毫會話)

+0

您是否考慮過使用ASP.NET成員提供程序而不是自己滾動? http://www.asp.net/web-forms/tutorials/moving-to-aspnet-20/membership – BStateham

+3

所以,如果用戶名是admin,你沒有檢查密碼?我想我看到一個安全漏洞。 – zimdanen

+0

請詳細說明發生了什麼問題。 – citronas

回答

0

你應該移動Response.Redirect()出try/catch語句,因爲它實際上是拋出一個異常。

即使代碼邏輯正確,Response.Redirects也會被catch語句吞噬。

編輯:

這在this question解釋。

+0

TanX,我將代碼移出try/catc h這是代碼: protected void btnOk_Click(object sender,EventArgs e) {string user_n = txtUser.Text;字符串pass_n = txtPass.Text; Int32 res = 0; DAL.DAL log = new DAL.DAL(); res = log.login_user_form(user_n,pass_n);如果(res == 1){if(user_n ==「admin」){Response.Redirect(「manage/AdminPage.aspx」);} else {Response.Redirect(「modcp/defult3.aspx」);}}} 但尚未dosent工作:( – Strawberry