在SpringDataRest中,如何在收到HTTP请求时添加自定义逻辑

时间:2018-08-20 07:20:10

标签: spring http spring-data-jpa spring-data-rest

我们知道, 在SpringDataRest中,仅使用存储库文件(不使用控制器),我们可以对其使用内置方法。

我的存储库代码为:

public interface StudentRepository extends JpaRepository<Student, Integer> {
}

我不想在其中添加自定义方法并添加我的请求处理逻辑。我希望进行一些配置或事件重写,以便在其中可以处理HttpRequest处理程序,解析令牌并检查令牌中的某些数据,然后基于该令牌,我将决定处理该请求或由于某些错误而将其丢弃。

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您想使用spring数据休息来限制对特定端点或操作的访问,并且您正在使用spring安全性,那么可以将@PreAuthorize annotationhasRole一起使用。以'Securing Spring Data REST PreAuthorize'为例,您可以有一个CrudRepository,例如:

@PreAuthorize("hasRole('ROLE_USER')")
public interface ParkrunCourseRepository extends CrudRepository<ParkrunCourse, Long> {
    @Override
    @PreAuthorize("hasRole('ROLE_ADMIN')")
    ParkrunCourse save(ParkrunCourse parkrunCourse);
}

然后只有具有admin角色的用户才能发布帖子以保存这些实体。