Spring Security — username password remember me (сохранение пароля пользователя для автоматической аутентификации)

Пример включения функции сохранения пароля пользователя для автоматической аутентификации без повторного ввода данных (Spring Security username password remember-me example).

Используемые технологии
  • Spring 4.2.2.RELEASE
  • Spring Security 4.0.2.RELEASE
  • MySQL 5.6.25
  • JSP 1.2.1
  • IntelliJ IDEA 14
  • Maven 3.2.5

1. Описание задачи

Необходимо подключить функцию remember-me в Spring Security 4.0.2. Рассмотреть различные настройки, позволяющие пользователю включить возможность «запомнить меня» для дальнейшего автоматического входа в приложение без ввода пароля.

2. Структура проекта

Полностью взята из Spring Security – создание группы ролей (group authorities). Создание таблиц базы данных. Здесь будет добавлен только код в существующие классы и представления.

3. Настройка spring-security-config.xml

В первой статье уже был добавлен тег <remember-me/> и в общем случае это уже включает возможность запоминания имени пользователя и пароля. Но, скажем так, это слабенький вариант, т.к. мы совсем не можем повлиять на какие-либо параметры. Мы пойдем другим путём! Для примера рассмотрим более реальный код.

В теге <remember-me> названия параметров объясняют их значение. Так же добавлен tokenRepository с ссылкой на базу данных, где будут храниться токены.

datasource-config.xml:

4. Создание таблицы для хранения токенов

По соглашению требуется создать таблицу для хранения токенов. Она будет создана в той же схеме, где хранятся пользователи и группы.

5. Описание представлений

Все jsp страницы остались без изменений относительно статьи, указанной вначале поста.

6. Тестирование

Входим в приложение:

SS rememberMe login

Переходим на страницу для админа:

SS rememberMe with pass

Видим сообщение, что пользователь админ вошел с помощью логина и пароля.

Для Chrome нажимаем f12 и смотрим вкладку Cookies

SS rememberMe jsessionidpng

Видно, что у нас появилась еще одна запись относящаяся к remember-me. Чтобы проверить как отработает наша функция «запомнить меня» необходимо удалить информацию о сессии JSESSIONID.

Пробуем войти на страницу админа снова:

SS rememberMe byRememberMe

Аутентификация прошла с помощью токена (заметьте сессия уже другая) . Ч.Т.Д.

Исходные коды:

Spring Security RememberMe — исходные коды и создание схемы с таблицами и записями

Share Button
11
10076 Total Views 1 Views Today

Добавить комментарий