使用Java中安全的Spring Data Rest RepositoryRestResource

时间:2016-05-15 15:45:55

标签: java spring spring-data-rest

我有一个简单的@RepositoryRestResource,它为User对象公开了一个REST接口。我的回购还包括通过电子邮件地址查找User的自定义方法。我使用@PostAuthorize来限制只有登录用户的访问权限。

@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserRepository extends JpaRepository<User, Long> {

    @PostAuthorize("hasAuthority('ROLE_ADMIN') OR principal.id == returnObject.id")
    @Query("SELECT u FROM User u WHERE u.email = :email")
    User findUserByEmail(@Param("email") String email);

我还想在UserRepository.findUserByEmail内使用UserDetailsService进行身份验证。

  @Override
  public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
      User user = userRepository.findUserByEmail(email);

由于findUserByEmail使用PostAuthorize进行注释,因此我的UserDetailsService因为没有可用的主体而引发了身份验证异常。

有没有办法从Java代码中使用安全和导出的@RepositoryRestResource

0 个答案:

没有答案