Невозможно создать полномочия с префиксом Spring и без него в Spring

Я использую Spring Boot и внедряю аутентификацию на основе LDAP. Я использую кастом UserDetailsContextMapper который расширяется LdapUserDetailsMapper и обычай PermissionEvaluator,

В моем mapUserFromContext метод UserDetailsContextMapper Я предоставляю новые полномочия и хочу добавить некоторые полномочия ROLE и некоторые полномочия привилегий. Таким образом, я хочу, чтобы некоторые власти были ROLE_BLABLA и немного BLABLA, Я проверяю, чтобы правильно создавать объекты полномочий, но вниз по линии к обычаю PermissionEvaluatorвсе власти обретают форму ROLE_BLABLA, Я отладил, чтобы проверить, и, кажется, SimpleAuthorityMapper.mapAuthority срабатывает, который проверяет все полномочия и добавляет ROLE_ если его нет, это полностью побеждает то, что я пытаюсь сделать. Как мне обойти это?

Вот мой UserDetailsContextMapper

@Component
public class UserDetailsContextMapper extends LdapUserDetailsMapper {
    @Override
    public UserDetails mapUserFromContext(DirContextOperations ctx, String username, Collection<? extends GrantedAuthority> authorities) {
    // Get authorityList from current context from DB

        // Map the roles

        for (MyRole role : authorityList) {
            List<GrantedAuthority> newAuthorities = new ArrayList<>();
            newAuthorities.add(createRoleAuthority(role.getRoleName()));

            List<Privilege> privileges = new ArrayList<>(role.getPrivileges());
            for (Privilege privilege : privileges) {
                newAuthorities.add(createPrivilegeAuthority(privilege.getPrivilegeName()));
            }

            for (GrantedAuthority authority : newAuthorities) {
                essence.addAuthority(authority);
            }
        }

    // DO other stuff

        return essence.createUserDetails();
    }

    protected GrantedAuthority createRoleAuthority(String role) {
        return createAuthority(role);
    }

    protected GrantedAuthority createPrivilegeAuthority(String privilege) {
        privilege = privilege.toUpperCase();
        return new SimpleGrantedAuthority(privilege);
    }
}

0 ответов

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