我们知道,
在springdatarest中,只使用存储库文件(而不是控制器),我们可以使用内置方法。
我的存储库代码是:
public interface StudentRepository extends JpaRepository<Student, Integer> {
}
我不想在那里添加自定义方法和请求处理逻辑。我想要一些配置或事件重写,在这里我可以处理httprequest处理程序,解析令牌并检查令牌中的一些数据,并且基于该令牌,我将决定处理该请求或放弃该请求,并出现一些错误。
谢谢。
最佳答案
如果您想使用spring data rest限制对特定端点或操作的访问,并且您正在使用spring security,那么您可以将@PreAuthorize annotation与hasRole
一起使用。以'Securing Spring Data REST PreAuthorize'为例,您可以有一个粗略的假设:
@PreAuthorize("hasRole('ROLE_USER')")
public interface ParkrunCourseRepository extends CrudRepository<ParkrunCourse, Long> {
@Override
@PreAuthorize("hasRole('ROLE_ADMIN')")
ParkrunCourse save(ParkrunCourse parkrunCourse);
}
然后,只有具有管理员角色的用户才能执行post以保存这些实体。