Spring Boot: загрузить роли безопасности из файла yaml

У меня есть приложение Spring Boot с безопасностью на уровне метода с помощью @RollsAllowed('NAME_OF_THE_ROLE') Ситуация, в которой я столкнулся, заключается в том, что когда приложение переходит из среды разработки в среду более высокого уровня, а оттуда в рабочую среду, имена групп безопасности меняются. Любые идеи о том, как я могу ввести имя безопасности в @RollsAllowed() в зависимости от того, в какой среде я развертываю приложение?

1
0
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение 1: Множественная толерантность
Если имя вашей роли не меняется со временем и между средами нет конфликта имен, вы можете использовать аннотацию @Secured с разными группами в зависимости от среды.
Например @Secured({ "DEV_VIEWER", "ALPHA_VIEWER", "PRD_VIEWER"})

Решение 2: Ручная работа
В противном случае, если вы хотите что-то, вы можете переключиться на аннотацию @PreAuthorize с помощью Custom PermissionEvaluator.
Baeldung сделал довольно полное руководство на эту тему https://www.baeldung.com/spring-security-create-new-custom-security-expression

с пользовательским оценщиком проблема все еще существует? например in @PostAuthorize("hasAuthority('FOO_READ_PRIVILEGE')") Я хочу, чтобы FOO_READ_PRIVILEGE часть читалась из файла/чего-то.

Toseef Zafar 13.11.2022 21:05

вы можете передать в параметре общее имя разрешения или даже ключ yml. и это метод hasPermission, который делает разрешение

Léo 13.11.2022 21:10

Поскольку вы сами пишете метод hasPermission, вы также можете убедиться, что он не принимает никаких параметров, а затем использовать более подходящие имена методов, такие как hasReadPrivilege

Léo 13.11.2022 21:16

Другие вопросы по теме