Как сделать простую страницу входа? - PullRequest
0 голосов
/ 02 марта 2012

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

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

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

Ответы [ 2 ]

6 голосов
/ 02 марта 2012

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

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

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

using(SqlConnection conn = new SqlConnection("connection string"))
{
    SqlCommand cmd = new SqlCommand("Select * FROM Register where username=@username and password=@password", 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 username=@username AND password=@password

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

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

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

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

Это должно помочь вам начать правильный путь.

0 голосов
/ 02 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...