Spring Boot Security: добавляем панель администратора и роли пользователей, ограничиваем доступ
letsCode
0:00 / 0:00
Spring Boot Security: добавляем панель администратора и роли пользователей, ограничиваем доступ
86 325 просмотров · 8 лет назад
letsCode
47,8 тыс. подписчиков
86 325 просмотров · 8 лет назад
Spring Boot Web Application (MVC): Добавляем панель администрирования пользователей и управляем правами доступа пользователей с помощью аннотации hasAuthority из Spring Security.
Код из видео:
https://github.com/drucoder/sweater/t...
В самом начале нам нужно добавить новую роль в список ролей (enum Role) и страницу, отображающую список пользователей нашего приложения. Для этого создадим новый шаблон для списка пользователей. Используем в нем удобный синтаксис для отображения списков через разделитель.
Синтаксис этой директивы описан тут:
https://freemarker.apache.org/docs/re...
Далее добавим ссылку на эту страницу с главной страницы приложения main.ftl. Следующим этапом добавляем шаблон для редактирования пользователя, где доступными для редактирования сделаны поля username и roles (доступный в виде списка чекбоксов).
В редакторе пользователя для вывода ролей используем функции seq_contains:
https://freemarker.apache.org/docs/re...
После этого создаем новый контроллер UserController и прописываем в нем эндпойнты для отображения списка пользователей, формы редактирования пользователя и обработки изменённых данных пользователя.
Теперь для любого авторизованного пользователя доступен список всех пользователей и возможность изменения их имени и списка ролей. Значит следующим логичным шагом будет ограничение прав. После добавления одному из пользователей роли ADMIN добавляем на UserController аннотацию
@PreAuthorize("hasAuthority('ADMIN')")
Которая ограничит доступ к панели администратора и оставит его только для пользователей с ролью ADMIN. Но эта аннотация не будет работать до добавления конфигурационной аннотации
@EnableGlobalMethodSecurity(prePostEnabled = true)
На класс конфигурации WebSecurityConfig
Документация по Freemarker:
https://freemarker.apache.org/docs/in...
Документация по языку выражений Spring Security, определяющих доступ
https://docs.spring.io/spring-securit...
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
➡ Твиттер: / letscodedru
➡ Чат в Discord: / discord
➡ Группа Вконтакте: https://vk.com/letscodedru
➡ Канал в Telegram: https://t.me/letsCode_dru
➡ Чат в Telegram: https://t.me/joinchat/FeiP9xEhqHajfqh...
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
Поддержать проект:
➡ Patreon / letscodedru
➡ Яндекс.Деньги https://money.yandex.ru/to/4100145167...
➡ PayPal paypal.me/letscodedru
➡ Qiwi https://qiwi.me/letscode
➡ WebMoney/BitCoin https://funding.webmoney.ru/d/drucoder
➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
Ссылка на плейлист:
• Spring Boot 2
Ссылка на канал: / @letscodedru
Ссылка на Яндекс.Дзен: https://zen.yandex.ru/media/id/5ac209...