мелкая авторизация jhipster, удалить авторизацию на основе ролей - PullRequest
2 голосов
/ 28 марта 2020

Я искал, как удалить авторизацию на основе ROLE и заменить ее авторизацией с мелким зерном. Под мелким зерном я подразумеваю, что метод All имеет @PreAuthorize ("isAuthorize ('GETCLIENT')") или непосредственно @IsAuthorize ("GETCLIENT"). Если у пользователя есть GETCLIENT в списке авторизации, то метод может быть выполнен. В противном случае система выдаст сообщение об ошибке или просто запретит доступ. Любая подсказка или информация о том, как это сделать, очень ценится. Спасибо.

1 Ответ

1 голос
/ 29 марта 2020

Как я уже говорил в комментарии, один быстрый и простой способ сделать это - добавить новые пользовательские права доступа в класс AuthoritiesConstants.java. У вас есть примеры того, как это сделать здесь и здесь .

public final class AuthoritiesConstants {

    public static final String ADMIN = "ROLE_ADMIN";

    public static final String USER = "ROLE_USER";

    public static final String ANONYMOUS = "ROLE_ANONYMOUS";

    public static final String GETCLIENT = "ROLE_GETCLIENT"; // custom

    private AuthoritiesConstants() {
    }
}

Не забудьте вставить новую роль в таблицу базы данных jhi_authority. Вы можете назначить пользователю новые права доступа через интерфейс управления admin/user-management, возможно, пользователю необходимо внести изменения в журнал, чтобы изменения вступили в силу.

Затем в методе, который вы хотите защитить, просто добавьте:

    @GetMapping("/clients/{id}")
    @PreAuthorize("hasRole(\"" + AuthoritiesConstants.GETCLIENT + "\")")
    public ResponseEntity<ClientDTO> getClient(@PathVariable Long id) {
        log.debug("REST request to get Client : {}", id);
        Optional<ClientDTO> clientDTO = clientService.findOne(id);
        return ResponseUtil.wrapOrNotFound(clientDTO);
    }

Я уже говорил @Secured ранее, но на самом деле вы должны использовать @PreAuthorize, поскольку он более мощный и позволяет работать с Spring Expression Language (SpEL) .

Ресурс go для понимания того, как работает защита JHipster, здесь , но на самом деле он просто следует стандартным руководствам Spring Security (как и многим другим), поэтому официальная документация о Spring Security также должно применяться.

Кроме того, если вы считаете, что это слишком просто или нарушает принятые по умолчанию соглашения, я обнаружил это руководство о пользовательских привилегиях, которые особенно хороши. Это немного больше работы, но должно работать лучше, так как вы отделяете полномочия (роли) от привилегий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...