| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||
Сессия — это абстракция, созданная для удобной работы с индивидуальными пользователями. Этот механизм позволяет хранить информацию между разными запросами одного и того же пользователя. Он используется для идентификации пользователей и позволяет отличать их друг от друга. Например, аутентификация на сайтах построена поверх механизма сессии. В этом домашнем задании вам предстоит реализовать аутентификацию ()пользователей на сайте и вывод flash-сообщений. Flash — это одноразовое сообщение о результатах выполнения любого действия. Оно обычно используется после перенаправления для индикации успешности или неудачи предыдущего действия. Flash-сообщения для своей работы также используют механизм сессий. Аутентификация — это процедура проверки подлинности пользователя, например путем сравнения введенного им пароля с паролем, сохраненным в базе данных пользователей.
Изучите содержимое методов doGet() и doPost(). Обратите внимание, как организована обработка сервлетом запросов по нескольким адресам и при помощи какого метода происходит получение части URL.
Допишите метод login(), который обрабатывает POST-запросы по пути /login. В методе реализуйте аутентификацию пользователя в системе. Чтобы данные пользователя сохранялись между запросами, вам потребуется использовать сессию. Аутентификация производится по email пользователя и паролю. Для простоты пароль для всех пользователей одинаковый — "password". Если пользователь существует и введен верный пароль, установите в сессию атрибуты "userId" со значением id пользователя и "flash" со значением "Вы успешно вошли", затем выполните редирект на главную страницу /. Таким образом данные пользователя будут сохранены в сессии и мы сможем определить, что данный пользователь вошел в систему. Атрибут "flash" будет использоваться для вывода flash-сообщения.
Если пользователь не существует в системе или пароль введен неверно, установите в сессию атрибут "flash" со значением "Неверные логин или пароль", установите код ответа 422 и передайте управление в файл /login.jsp. При ошибке входа поле формы email должно быть заполнено введенными данными.
Допишите метод logout(), который обрабатывает POST-запросы по пути /logout. В методе реализуйте выход пользователя из системы. Чтобы вывести пользователя из системы, нужно удалить из сессии его данные. После вывода пользователя из системы установите в сессию атрибут "flash" со значением "Вы успешно вышли" и выполните редирект на главную страницу /.
В прошлом домашнем задании мы создали несколько шаблонов для работы с пользователями. Вы наверняка обратили внимание, что есть одинаковая общая часть, которая повторяется в каждом шаблоне. Чтобы не копировать эту общую часть в каждый шаблон, ее можно вынести в отдельный файл, а в jsp-файлах разместить только переменную часть, уникальную для каждого шаблона.
Изучите содержимое файла webapp/WEB-INF/application.tag. Обратите внимание на то, как происходит работа с сессией.
Организуйте вывод flash-сообщения. Чтобы добавить красоты, используйте классы Bootstrap
<div class="alert alert-info" role="alert">
Сообщение
</div>Так как flash-сообщение должно выводиться только один раз, после вывода его нужно удалить.
Работа сессий основана на механизме куки. Старт сессии на техническом уровне означает установку специальной куки в браузер. Эта кука содержит идентификатор сессии, который уникален для каждого пользователя. Запустите приложение и откройте его в браузере. Выполните аутентификацию пользователя в системе. Откройте панель разработчика на вкладке Application - Cookies и посмотрите установленные куки.
| Back | FazBrowse Home | New Git URL |