Невозможно создать экземпляр GrantedAuthority при использовании WebClient - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь получить какого-то пользователя из другого микросервиса и получаю эту ошибку

Cannot construct instance of org.springframework.security.core.GrantedAuthority

модель, которую я выбираю, реализует userDetails

это вызов WebClient:

        return this.webClient.get()
                .uri("auth-microservice/users/{userId}", id)
                .headers(httpHeaders -> {
                    httpHeaders.add("Authorization",request.getHeader("Authorization"));
                    request.getHeaders("Accept").asIterator().forEachRemaining(String -> {
                        httpHeaders.add("Accept",String);
                    });
                    request.getHeaders("Content-Type").asIterator().forEachRemaining(String -> {
                        httpHeaders.add("Accept",String);
                    });
                })
                .retrieve()
                .toEntity(User.class);

когда я получаю напрямую на указанный микросервис c, я получаю правильный ответ, но когда я использую свой WebClient из другого микросервиса, я получаю эту ошибку. конечно, это связано с массивом Authority, потому что когда я устанавливаю getter для возврата null вместо Collection, я получаю нужный объект, но без ролей, так как я возвращаю null

При использовании этого , я получаю ошибку конструкции не может

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        List<GrantedAuthority> list = new ArrayList<GrantedAuthority>();
        list.add(new SimpleGrantedAuthority(ROLE_PREFIX + role));
        return list;
    }

При использовании этого я получаю ответ пользователя без ролей

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return null
    }

, и ответ:

{
    "id": 35,
    "username": "abdou",
    "email": "aa@aa.com",
    "pictureURL": null,
    "enabled": false,
    "authorities": [
        {
            "authority": "ROLE_null"
        }
    ]
}

поэтому мой вопрос: есть ли способ преодолеть эту ошибку, чтобы я тоже мог вернуть роли в ответе?

Спасибо

...