Spring Security — создание группы ролей (group authorities). Создание таблиц базы данных.

Добавление групп ролей авторизации из базы данных в Spring Security. Подключение базы данных пользователей и их прав доступа к Spring Security.

Используемые технологии
  • 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. Описание задачи

Добавить связь приложения с Spring Security получать данные о пользователях, их правах и паролях из базы данных MySQL. Создание групп ролей аутентификации для упрощения смены прав доступа в приложении большому числу пользователей.

2. Создание базы данных MySQL

Основа приложения взята из Spring Security – пример приложения Hello World. Базовые настройки. Spring Security example. Изменения в представлениях и настройках будут отображены по ходу статьи. Структура проекта не изменилась.

Если вы не знаете как подключить созданную базу данных MySQL к IntelliJ IDEA, то рекомендую к прочтению создание MySQL базы данных и подключение к IntelliJ IDEA.

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

  • Таблица с пользователями и таблица с правами
  • К первому варианту добавляется таблица с группами пользователей (админы, гости и т.п.), таблица с правами для каждой группы (админы могут всё, пользователи чуть меньше и т.п.), а так же таблица с членами каждой группы (Вася входит в админы, Петя входит в пользователи и т.п.).

Мы будем использовать второй вариант. Если вам достаточно только первого варианта, то поменять код из статьи будет не сложно.

Spring Security таблица пользователей

Код создания таблиц и записей для MySQL:

Если вставить этот код в MySQL WorkBench, то вы получите как созданную схему с таблицами, так и тестовые данные внутри неё.

3. Настройка конфигурации spring-config*.xml

spring-security.xml:

Для темы статьи важны два последних тега <authentication-provider user-service-ref=»jdbcGroupsImpl»/> и <b:bean id=»jdbcGroupsImpl». Т.к. мы используем вариант с группами ролей, то в свойствах указываем enableGroups=true и enableAuthorities=false. Последнее свойство указывает на источник базы данных dataSource:

data-source.xml:

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

Остальные настройки доступны по клику:

dispatcher-servlet.xml:

web.xml:

pom.xml (добавлен mysql-connector-java):

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

В целом вся логика осталась из статьи, указанной в начале, но были добавлены незначительные изменения для удобства вывода и навигации. Посмотреть все страницы jsp и изменения можно скачав исходные коды в конце статьи.

login.jsp

welcomePage.jsp

adminPage.jsp

accessDenied.jsp

exitUser.jsp

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

Spring Security DataBaseConnection — исходные коды. Дамп для MySQL внутри.

Share Button
12
13187 Total Views 3 Views Today

One thought on “Spring Security — создание группы ролей (group authorities). Создание таблиц базы данных.

  1. alko:

    а каков будет вариант для одной таблицы?
    все дело в том, что хочу сделать приложение с одной таблицей в которой будут следующие поля:
    user_role (для ограничений)
    user_name (для вывода на страницах)
    user_login (для входа)
    user_pass (для входа)

    соответственно, таблица будет неизменяемой, и в ней будет только три пользователя с разными правами, типа админ, оператор и наблюдатель

    подскажите как поступить в этом случае,
    спасибо

    и еще пару вопросов:
    1. можно ли дать доступ сразу к группе страниц с одинаковым префиксом в имени к примеру
    2. возможность скрывать часть страницы
    к примеру: страница одна, но пользователь видит 2 кнопки, а админ видит 3
    спасибо

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