2013-12-17 3 views
0

Я попытался найти, как это сделать, но все, что я могу найти, кажется слишком сложным и всеобъемлющим, что я не могу понять, как это работает. Ниже моя ситуация:Как сделать простую форму входа с помощью FormsAuthentication и MySQL?

У меня есть простой MySQL таблица называется users с тремя атрибутами: user_id, username и password.

В 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

Forms Authentication не то же самое, как членство. Explanation

У вас все правильно настроено. Web.config - это то, где вы включаете Forms Auth, который по существу является модулем HTTP, который проверяет cookie ASPXAUTH. Для того, чтобы сначала установить куки в вашем коде после проверки использования пароля:

FormsAuthentication.RedirectFromLoginPage(userName, createPersistentCookie); 

Я думаю, что это в System.Web.dll, System.Web.Security имен.

Ваши последующие запросы будут иметь имя пользователя, которое вы укажете.

Имейте в виду, что хранение паролей в текстовом формате - плохая идея. Используйте хеширование.

0
string username,password; 
if(username=="mohammadreza"&password=="12345") 
{ 
    messageox.show("welcome"); 
    form1.activeform.enable=true; 
} 
Смежные вопросы