2012-03-01 6 views
-1

Я хочу сделать простую страницу входа, без регистрации только имя пользователя и пароль, который я использовал в базе данных SQL. это то, что я написал сейчас для кнопки 1:Как сделать простую страницу входа?

string connection_string = "Path to database"; 
SqlConnection connect = new SqlConnection(); 
connect.ConnectionString = connection_string; 
connect.Open(); 
string sql = "Select * FROM Register where [email protected] and [email protected]"; 
SqlCommand 1 = new SqlCommand("username",textbox1User.text); 
SqlCommand 2 = new SqlCommand("password",textbox2pass.text); 

Это то, что у меня есть сейчас. Мне нужно сделать остальную страницу входа, и если значения в порядке, я буду перенаправлен на страницу. но мне также нужно знать, как я могу защитить страницу за то, что ей не разрешили обращаться к ней другими пользователями, просто набрав url для файла. Так что он должен работать только при входе в систему.

+0

Не храните пароли в текстовом виде. – SLaks

+3

Вы должны использовать встроенные системы аутентификации членства и форм ASP.Net. Не заново изобретайте колесо, особенно в безопасности. – SLaks

+0

новый товар C#? или как разработчик? –

ответ

6

Во-первых, я должен поздравить вас с желанием использовать параметры для вашего SQL. Многие новички этого не делают, что приводит к ужасным атакам SQL Injection.

Во-вторых, вы действительно должны хешировать свои пароли. Никогда не храните текстовые пароли. Так как именно хеш-пароли являются предметом много дискуссий и будут усложнять код, я сейчас отложу это в сторону.

Теперь, переходя к актуальному вопросу. Во-первых, в коде есть несколько ошибок. Во-первых это параметры создаются неправильно, что у вас есть должно быть больше вдоль линий этого:

using(SqlConnection conn = new SqlConnection("connection string")) 
{ 
    SqlCommand cmd = new SqlCommand("Select * FROM Register where [email protected] and [email protected]", conn); 
    cmd.Parameters.AddWithValue("@username", textbox1User.Text); 
    cmd.Parameters.AddWithValue("@password", textbox2User.Text); 
} 

(см. http://msdn.microsoft.com/en-us/library/yh598w02.aspx больше об использовании Это хорошая привычка)

С, что сделано, легко проверить логин, вы можете сделать что-то подобное для SqlCommand:

SELECT COUNT(*) FROM Register WHERE [email protected] AND [email protected] 

а затем добавьте в свой код, после добавления параметров, но до закрывающей скобки на using:

conn.Open();  
int result = Convert.ToInt32(cmd.ExecuteScalar()); 

result будет 0, если пользователь не был найден, или 1, если ровно один пользователь был найден (Если вы можете иметь несколько пользователей с тем же именем пользователя, есть и другие вопросы, за пределами этой области).

Теперь, чтобы обеспечить контроль доступа, обратите внимание на http://support.microsoft.com/kb/301240. Термины, которые вас интересуют, это «Аутентификация форм» и «авторизация web.config». Обратите внимание, что образцы кода в предоставленной ссылке немного устарели, но, в общем, показывают, как выполнить то, что вы просите.

Это должно заставить вас начать с правильной траектории.

-1

Вы также можете использовать HTACCESS для управления содержимым и защитой паролем. Это самый простой способ, так как вам не нужно беспокоиться о SQL и хранить пароли.

+2

Учитывая, что речь идет об ASP.Net, и является вопросом для начинающих, я сомневаюсь, что они работают с Mono на Apache, где и будет использоваться .htaccess. –

+0

да, но он сказал, что пользователю не нужно регистрироваться, поэтому в этом случае htaccess лучше. Не знал, что это не будет работать для ASP.NET –

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