Spring Boot Security: добавляем панель администратора и роли пользователей, ограничиваем доступ
Spring Boot Web Application (MVC): Добавляем панель администрирования пользователей и управляем правами доступа пользователей с помощью аннотации hasAuthority из Spring Security. Код из видео: https://github.com/drucoder/sweater/tree/hasAuthority В самом начале нам нужно добавить новую роль в список ролей (enum Role) и страницу, отображающую список пользователей нашего приложения. Для этого создадим новый шаблон для списка пользователей. Используем в нем удобный синтаксис для отображения списков через разделитель. Синтаксис этой директивы описан тут: https://freemarker.apache.org/docs/ref_directive_list.html#ref_list_sep Далее добавим ссылку на эту страницу с главной страницы приложения main.ftl. Следующим этапом добавляем шаблон для редактирования пользователя, где доступными для редактирования сделаны поля username и roles (доступный в виде списка чекбоксов). В редакторе пользователя для вывода ролей используем функции seq_contains: https://freemarker.apache.org/docs/ref_builtins_sequence.html#ref_builtin_seq_contains После этого создаем новый контроллер UserController и прописываем в нем эндпойнты для отображения списка пользователей, формы редактирования пользователя и обработки изменённых данных пользователя. Теперь для любого авторизованного пользователя доступен список всех пользователей и возможность изменения их имени и списка ролей. Значит следующим логичным шагом будет ограничение прав. После добавления одному из пользователей роли ADMIN добавляем на UserController аннотацию @PreAuthorize("hasAuthority('ADMIN')") Которая ограничит доступ к панели администратора и оставит его только для пользователей с ролью ADMIN. Но эта аннотация не будет работать до добавления конфигурационной аннотации @EnableGlobalMethodSecurity(prePostEnabled = true) На класс конфигурации WebSecurityConfig Документация по Freemarker: https://freemarker.apache.org/docs/index.html Документация по языку выражений Spring Security, определяющих доступ https://docs.spring.io/spring-security/site/docs/current/reference/html/authorization.html#el-access ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ ➡ Твиттер: https://twitter.com/letsCodeDru ➡ Чат в Discord: https://discord.gg/xs6XxSx ➡ Группа Вконтакте: https://vk.com/letscodedru ➡ Канал в Telegram: https://t.me/letsCode_dru ➡ Чат в Telegram: https://t.me/joinchat/FeiP9xEhqHajfqhLr4z-Nw ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ Поддержать проект: ➡ Patreon https://www.patreon.com/letscodedru ➡ Яндекс.Деньги https://money.yandex.ru/to/41001451675086 ➡ PayPal paypal.me/letscodedru ➡ Qiwi https://qiwi.me/letscode ➡ WebMoney/BitCoin https://funding.webmoney.ru/d/drucoder ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ Ссылка на плейлист: https://www.youtube.com/playlist?list=PLU2ftbIeotGpAYRP9Iv2KLIwK36-o_qYk Ссылка на канал: https://www.youtube.com/channel/UC1g3kT0ZcSXt4_ZyJOshKJQ Ссылка на Яндекс.Дзен: https://zen.yandex.ru/media/id/5ac20956168a91ffeae449c5
Spring Boot Web Application (MVC): Добавляем панель администрирования пользователей и управляем правами доступа пользователей с помощью аннотации hasAuthority из Spring Security. Код из видео: https://github.com/drucoder/sweater/tree/hasAuthority В самом начале нам нужно добавить новую роль в список ролей (enum Role) и страницу, отображающую список пользователей нашего приложения. Для этого создадим новый шаблон для списка пользователей. Используем в нем удобный синтаксис для отображения списков через разделитель. Синтаксис этой директивы описан тут: https://freemarker.apache.org/docs/ref_directive_list.html#ref_list_sep Далее добавим ссылку на эту страницу с главной страницы приложения main.ftl. Следующим этапом добавляем шаблон для редактирования пользователя, где доступными для редактирования сделаны поля username и roles (доступный в виде списка чекбоксов). В редакторе пользователя для вывода ролей используем функции seq_contains: https://freemarker.apache.org/docs/ref_builtins_sequence.html#ref_builtin_seq_contains После этого создаем новый контроллер UserController и прописываем в нем эндпойнты для отображения списка пользователей, формы редактирования пользователя и обработки изменённых данных пользователя. Теперь для любого авторизованного пользователя доступен список всех пользователей и возможность изменения их имени и списка ролей. Значит следующим логичным шагом будет ограничение прав. После добавления одному из пользователей роли ADMIN добавляем на UserController аннотацию @PreAuthorize("hasAuthority('ADMIN')") Которая ограничит доступ к панели администратора и оставит его только для пользователей с ролью ADMIN. Но эта аннотация не будет работать до добавления конфигурационной аннотации @EnableGlobalMethodSecurity(prePostEnabled = true) На класс конфигурации WebSecurityConfig Документация по Freemarker: https://freemarker.apache.org/docs/index.html Документация по языку выражений Spring Security, определяющих доступ https://docs.spring.io/spring-security/site/docs/current/reference/html/authorization.html#el-access ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ ➡ Твиттер: https://twitter.com/letsCodeDru ➡ Чат в Discord: https://discord.gg/xs6XxSx ➡ Группа Вконтакте: https://vk.com/letscodedru ➡ Канал в Telegram: https://t.me/letsCode_dru ➡ Чат в Telegram: https://t.me/joinchat/FeiP9xEhqHajfqhLr4z-Nw ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ Поддержать проект: ➡ Patreon https://www.patreon.com/letscodedru ➡ Яндекс.Деньги https://money.yandex.ru/to/41001451675086 ➡ PayPal paypal.me/letscodedru ➡ Qiwi https://qiwi.me/letscode ➡ WebMoney/BitCoin https://funding.webmoney.ru/d/drucoder ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖ Ссылка на плейлист: https://www.youtube.com/playlist?list=PLU2ftbIeotGpAYRP9Iv2KLIwK36-o_qYk Ссылка на канал: https://www.youtube.com/channel/UC1g3kT0ZcSXt4_ZyJOshKJQ Ссылка на Яндекс.Дзен: https://zen.yandex.ru/media/id/5ac20956168a91ffeae449c5
