Ролевая иерархия Spring: NullPointerException - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь реализовать Ролевую иерархию , а затем использовать ее в методе безопасности.

Для простоты здесь всего две роли: АДМИН и ЦЕЛЬ. АДМИН включает ЦЕЛЬ.

Я создал компонент RoleHierarchy в отдельном файле конфигурации, потому что некоторые люди здесь заявили, что фильтры Spring Security необходимо настроить довольно рано.

Проблема: Когда я ' Получая доступ к контроллеру, я получаю ошибку NullPointer (которая указана ниже)

Вопросы:

  1. Где находится ошибка?
  2. Нужно ли мне декларировать свою пользовательскую иерархию в GlobalMethodSecurityConfiguration или WebSecurityConfigurerAdapter или в обоих?

Исходный код:

  1. BeleHierarchy Bean
@Configuration
public class CustomRoleHierarchy extends RoleHierarchyImpl  {
    @Bean
    public RoleHierarchyImpl roleHierarchy() {
        RoleHierarchyImpl roleHierarchy = new RoleHierarchyImpl();
        roleHierarchy.setHierarchy("ADMIN > GOAL");
        return roleHierarchy;
    }

}
GlobalMethodSecurityConfiguration
@EnableGlobalMethodSecurity(securedEnabled = true, prePostEnabled = true, jsr250Enabled = true, proxyTargetClass = true)
public class CustomMethodSecurityConfig extends GlobalMethodSecurityConfiguration {


    @Autowired
    CustomPermissionEvaluator permissionEvaluator;
    @Autowired
    CustomRoleHierarchy roleHierarchy;

    @Override
    protected MethodSecurityExpressionHandler createExpressionHandler() {
        DefaultMethodSecurityExpressionHandler handler = new DefaultMethodSecurityExpressionHandler();
        handler.setPermissionEvaluator(permissionEvaluator);
        handler.setRoleHierarchy(roleHierarchy);
        return handler;
    }
Контроллер

Пытался также использовать @PreAuthorize ("hasRole ('ROLE_GOAL')" или @PreAuthorize ("hasRole ('GOAL')".

    @RequestMapping(value = WEB_URL, method = RequestMethod.GET)
    @PreAuthorize("hasAuthority('GOAL')")
    public String goalList (Model model) {
    ...

Ошибка при доступе к контроллеру:

java.lang.NullPointerException: null
    at org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl.getRolesReachableInOneOrMoreSteps(RoleHierarchyImpl.java:164) ~[spring-security-core-5.1.4.RELEASE.jar:5.1.4.RELEASE]
    at org.springframework.security.access.hierarchicalroles.RoleHierarchyImpl.getReachableGrantedAuthorities(RoleHierarchyImpl.java:122) ~[spring-security-core-5.1.4.RELEASE.jar:5.1.4.RELEASE]
    at org.springframework.security.access.expression.SecurityExpressionRoot.getAuthoritySet(SecurityExpressionRoot.java:167) ~[spring-security-core-5.1.4.RELEASE.jar:5.1.4.RELEASE]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...