Я знаю, что этот вопрос сейчас немного стар, но я думал, что отвечу за потомство.
Я думаю, у вас есть несколько вариантов.
Один из вариантов - вообще не использовать 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>. Используя имя пользователя, получите хешированный пароль из базы данных. Извлеките соль, добавьте ее к незашифрованному паролю, предоставленному пользователем, и повторите его. Затем сравните строки хеша. Если они не совпадают, вернитесь на страницу входа с ошибкой. В противном случае пройти через.
Если часть вышеперечисленного не имеет смысла искать на этом сайте «соляные пароли» и т. Д. Как отмечал первоначальный ответчик, плохо хранить пароли в виде открытого текста в базе данных. : -)