Я пытаюсь использовать @PreAuthorize, но мне нужно настроить его таким образом, чтобы разные среды имели разный доступ, но когда я пытаюсь использовать @PreAuthorize ("hasAuthority (#bean)"), в авторитет ничего не читается.
Я пытался использовать #bean и @bean, но ни одна из них не работала, но если у меня есть жестко закодированная строка, она работает нормально.
При использовании #bean ничего не передается, а при использовании @bean я получаю No bean resolver registered in the context to resolve access to bean 'readRole'
@Bean
public String readRole() {
return "Domain Users";
}
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize("hasAuthority(@readRole)")
public @interface UserCanSeeRestricted { }
Тогда в моем покое контроллер:
@SecurityConfigExample.UserCanSeeRestricted
@GetMapping("/all")
public Collection<Office> getAllOffices()
{
return officeService.getAll();
}
Я хочу иметь возможность использовать readRole, чтобы возвращать различные группы в зависимости от среды и читать их с помощью @ PreAuthorize
Что я пробовал:
public class SecurityConfig {
public String readRole = "Domain Users";
}
@Bean
public SecurityConfig readRole() {
return new SecurityConfig();
}
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize("hasAuthority(@readRole.readRole)")
public @interface UserCanSeeRestricted { }
--- Обновлено 2 раз:
public class SecurityConfig {
public String readRole() {
return "Domain Users";
}
}
@Bean
public SecurityConfig readRole() {
return new SecurityConfig();
}
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@PreAuthorize("hasAuthority(@readRole.readRole())")
public @interface UserCanSeeRestricted { }
Я пытался заменить
@SecurityConfigExample.UserCanSeeRestricted
с
@PreAuthorize("hasAuthority(@readRole.readRole())")
и это не сработало