2013-12-17 135 views
0

我試過如何做到這一點,但是我能找到的所有東西似乎都太複雜和全面,以至於我無法真正掌握它的工作原理。以下是我的情況:如何使用FormsAuthentication和MySQL創建簡單的登錄表單?

我有一個簡單的MySQL 稱爲users具有三個屬性:user_idusernamepassword

ASP.NET頁面我有兩個文本框和一個登錄按鈕。

我讀過,我可以使用FormsAuthentication,但我一直無法弄清楚它是如何工作的。我必須使用「會員」嗎?或者我可以使用FormsAuthentication嗎?我寧願讓它儘可能簡單。

到目前爲止,我只是做一個選擇是這樣的:

 String query = "SELECT * FROM users WHERE username = @UserName 
      AND password = @Password;"; 
     cmd = new MySqlCommand(query, conn); 
     cmd.Parameters.AddWithValue("@UserName", userName); 
     cmd.Parameters.AddWithValue("@Password", password); 

在我的代碼隱藏我有這樣的:

 String username = txtUsername.Text; 
     String password = txtPassword.Text; 

     User user = database.LogIn(username, password); 

最後,在我的web.config文件,我有這樣的:

 <authentication mode="Forms"> 
     <forms name="MyCookieName" 
       loginUrl="~/Default.aspx" 
       timeout="10" 
       protection="All" 
       path="/"> 
     </forms> 
     </authentication> 
     <authorization> 
     <deny users="?"/> 
     </authorization> 

到目前爲止,我可以驗證用戶是否輸入了有效的輸入,但我不明白我可以如何申請FormsAuthentication。任何幫助表示讚賞。

回答

0

看到這個link

忽略他們說的存儲過程是什麼。然後結帳此代碼

protected void Application_AuthenticateRequest(object sender, EventArgs e) 
{ 
    MySqlConnection conn; 

    if(Request.IsAuthenticated) 
    { 
     try 
     { 
      conn = new MySqlConnection("server=Cheese;user id=george; password=blah; database=mysql; pooling=false"); 
      MySqlCommand cmd = new MySqlCommand(); 
      cmd.Connection = conn; 
      cmd.CommandText = 
       "SELECT G.Name FROM Roles R INNER JOIN Groups G ON R.GroupID = G.GroupID INNER JOIN Users U ON R.UserID = U.UserID AND U.Username = ?"; 
      cmd.Parameters.Add("UserName",User.Identity.Name); 
      conn.Open() 
      MySqlDataReader r = cmd.ExecuteReader(); 
      ArrayList groups = new ArrayList(); 

      while(r.Read()) 
       { 
        groups.Add(r.GetString(0)); 
      } 

      HttpContext.Current.User = new GenericPrincipal(User.Identity, groups.ToArray(typeof(System.String))); 
     } 
     finally 
     { 
      conn.Close(); 
     } 
    } 
} 

讓我知道是否有任何查詢仍然存在。

乾杯

+0

謝謝你的回答。我會檢查這一點。 – guitarzero

0

表單認證與Membership不同。 Explanation

您的一切設置都正確。 Web.config是啓用Forms Auth的地方,它本質上是一個檢查ASPXAUTH cookie的HTTP模塊。爲了初始設置在你的代碼中的Cookie驗證密碼後使用:

FormsAuthentication.RedirectFromLoginPage(userName, createPersistentCookie); 

我認爲這是System.Web.dllSystem.Web.Security命名空間。

您的後續請求將具有您指定的用戶名。

請記住,以純文本存儲密碼是一個壞主意。使用散列。

0
string username,password; 
if(username=="mohammadreza"&password=="12345") 
{ 
    messageox.show("welcome"); 
    form1.activeform.enable=true; 
} 
相關問題