Безопасные конечные точки CRUD - PullRequest
0 голосов
/ 21 октября 2019

Я хотел бы защитить с помощью ролей конечные точки CRUD, которые автоматически создаются:

@RepositoryRestResource(collectionResourceRel = "user", path = "user"), 

Это очень легко сделать с помощью определения антиматчей и hasAuthority для всего, но я не могу дать антматчеры дляПо мере роста приложения в каждой конечной точке репозитория невозможно вернуться назад и отредактировать конфигурацию безопасности. Итак, чтобы быть ясным, я ищу что-то вроде аннотации @RepositoryRestResource и в этой аналогичной аннотации, чтобы определить, может быть, какие роли связаны с какими методами в репозитории, например:

@SomeAnnotation(Post.Method.hasAuthority(PRODUCT-UPDATE),Delete.Method.hasAuthority(PRODUCT-DELETE),

текущее репо выглядит так:


public interface UserRepository extends MongoRepository<User,String>
{

    User findByFirstName(@Param("firstName") String firstName);
    User findByLastName(@Param("lastName") String lastName);
    User findByUserName(@Param("userName") String userName);
}

1 Ответ

0 голосов
/ 21 октября 2019

Я думаю, вы ищете @PreAuthorize. Таким образом, ваш репо может выглядеть примерно так:

@RepositoryRestController
@RequestMapping("/user")
public interface UserRepository extends MongoRepository<User,String>
{

    @GetMapping("/byFirstName")
    @PreAuthorize("hasAuthority('ROLE_CLIENT') and #oauth2.hasScope('viewUser')")
    User findByFirstName(@Param("firstName") String firstName);

    @PostMapping("/save")
    @PreAuthorize("hasAuthority('ROLE_ADMIN')")
    Long save(@Param("user") @RequestBody User user);    
}

Подробнее см. в этом руководстве .

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