Каков наилучший способ сделать сеанс входа в систему с помощью Perl HTML :: Mason? - PullRequest
0 голосов
/ 26 ноября 2009

Я с некоторыми трудностями в этом.

У меня есть HTML-форма для входа, и я хочу знать, совпадают ли имя пользователя и пароль с информацией на моем сервере MySQL.

Каков наилучший способ сделать это?

Большое спасибо

Ответы [ 3 ]

4 голосов
/ 21 декабря 2009

Я знаю, что этот вопрос сейчас немного стар, но я думал, что отвечу за потомство.

Я думаю, у вас есть несколько вариантов.

Один из вариантов - вообще не использовать HTML :: Mason для проверки пароля. Это то, что мы привыкли делать. Поскольку ваша страница HTML :: Mason, скорее всего, работает внутри веб-сервера, вы, вероятно, можете использовать ее для проверки имени пользователя и пароля. Например, если вы используете Apache и mod_perl для обслуживания своего сайта, есть несколько модулей для аутентификации, в том числе один, который может взаимодействовать с MySQL и проверять по пользовательской таблице со столбцами имени пользователя и пароля. Проверьте документацию для mod_authn_dbd для Apache 2.2. Я рекомендую этот подход.

Еще один способ сделать это - использовать фреймворк, такой как Catalyst . У Catalyst уже есть плагины для выполнения требуемого типа аутентификации, и это избавит вас от необходимости думать о большинстве проблем, которые вам понадобятся для написания кода, если вы попытаетесь сделать это на 100% в Mason. Вы все еще можете использовать HTML :: Mason для своих шаблонов страниц.

Если вы настроены использовать HTML :: Mason для аутентификации, я бы сделал это следующим образом:

  • Поместите автообработчик в папку, которую вы хотите защитить - обратите внимание, что все подпапки будут получать одинаковую защиту аутентификации

  • В блоке <% init> в автообработчике проверьте допустимый токен сеанса в файле cookie. Если ничего не существует, перенаправьте ($ m-> redirect) в форму входа. В противном случае ничего не делать - автообработчик продолжит работу и страница будет обработана.

  • В обработчике формы входа в систему извлеките имя пользователя и пароль в блоке <% args>. Используя имя пользователя, получите хешированный пароль из базы данных. Извлеките соль, добавьте ее к незашифрованному паролю, предоставленному пользователем, и повторите его. Затем сравните строки хеша. Если они не совпадают, вернитесь на страницу входа с ошибкой. В противном случае пройти через.

Если часть вышеперечисленного не имеет смысла искать на этом сайте «соляные пароли» и т. Д. Как отмечал первоначальный ответчик, плохо хранить пароли в виде открытого текста в базе данных. : -)

2 голосов
/ 19 декабря 2009

Создайте компонент Mason, который проверяет вашу комбинацию имени пользователя и пароля для MySQL с DBI и возвращает true или false, если ему передаются имя пользователя и пароль в хеше% ARGS. Затем загрузите компонент в верхней части формы входа в систему, используя возвращаемое значение, чтобы определить, отображать ли форму входа в систему или перенаправить на ваш контент.

1 голос
/ 27 ноября 2009

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

...