2013-03-12 2 views
1

Я делаю проект в asp.net. он использует функцию входа, которую я реализовал с двумя текстовыми полями и кнопкой. ничего особенного.расположение данных сеанса в проекте asp.net

так что теперь я должен определить, какой вид пользователь вошел в систему, поскольку есть различные роли, как администратор, пользователь, гость ...

так, что мне нужно знать, что сессия [ «UserAuthentication»] является и что он делает ... Я думаю, что я могу добавить эти данные в дополнительную таблицу для регистрации всех сеансов ... это хороший подход?

вот мой метод аутентификации:

protected void Button1_Click(object sender, EventArgs e) 
     { 
      string username = tbUsername.Text; 
      string pwd = tbPassword.Text; 
      string s; 
      s = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
      SqlConnection con = new SqlConnection(s); 
      con.Open(); 
      string sqlUserName; 
      sqlUserName = "SELECT Username, UserPassword FROM Benutzer WHERE Username ='" + username + "' AND UserPassword ='" + pwd + "'"; 
      SqlCommand cmd = new SqlCommand(sqlUserName, con); 
      string CurrentName; 
      CurrentName = (string)cmd.ExecuteScalar(); 
      if (CurrentName != null) 
      { 
       Session["UserAuthentication"] = username; 
       Session.Timeout = 1; 
       Response.Redirect("Default.aspx"); 
      } 
      else 
      { 
       lblStatus.ForeColor = System.Drawing.Color.Red; 
       lblStatus.Text = "Benuztername/Password ungültig!";        
      } 
     } 
+0

привет человек. WTF? 'sqlUserName =" SELECT Username, UserPassword FROM Benutzer WHERE Username = '"+ имя пользователя +" "AND UserPassword ='" + pwd + "'"; '->, чтобы вы хотели, чтобы кто-то удалил вашу базу данных прямо? – ub1k

+1

в стороне от вашего вопроса, я предлагаю зашифровать пароли для хранения в DB –

+0

- этот код подвержен sql-инъекциям? – LeonidasFett

ответ

2

Session["UserAuthentication"] является переменной, которая будет содержать значение username глобально на всех страницах для конкретного пользователя тока.

Да, вы можете добавить данные в SQL Table. Для этого вам нужно добавить это в свой файл web.config.

<sessionState mode="SQLServer" sqlConnectionString="data source=yourDataSource;user id=username;password=password" cookieless="false" timeout="20" /> 

Только в том случае, если ваш интересно, где в Database делает SessionId переменной сохраняется - для этого вам необходимо установить ASPState Database на вашем сервере. И передайте строку соединения соответственно в файле web.config, как описано выше.

Как добавить базу данных ASPState?
1. Перейдите на этот путь: C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319
2. Здесь вы найдете script именем InstallSqlState.sql, который вы должны выполнить в вашем SQL server.

+0

Имеет ли значение то, что я пишу в скобках? Кажется, я не нашел список определенных переменных. поэтому я могу просто создать свой собственный набор переменных и сохранить их в db? – LeonidasFett

+0

проверить мой обновленный ответ ... –

+0

ОК спасибо за советы. мне нужно использовать базу данных ASPState или я могу хранить переменные сеанса в моей существующей базе данных? – LeonidasFett

Смежные вопросы