Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring数据REST中的资源所有权限制_Java_Spring_Spring Data_Spring Data Rest - Fatal编程技术网

Java Spring数据REST中的资源所有权限制

Java Spring数据REST中的资源所有权限制,java,spring,spring-data,spring-data-rest,Java,Spring,Spring Data,Spring Data Rest,使用Spring Data REST,我有一个多对多关系: 具有一组任务的用户实体类: @ManyToMany(mappedBy=“users”,fetch=FetchType.EAGER) 私人设定任务; 任务实体类一组用户: @ManyToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE}) @JoinTable(name=“task\u user”) 私人用户 一个表(task\u user),用于连接这两个表(通过两列,task\

使用Spring Data REST,我有一个多对多关系:

  • 具有一组任务的用户实体类:

    @ManyToMany(mappedBy=“users”,fetch=FetchType.EAGER)
    私人设定任务;

  • 任务实体类一组用户:

    @ManyToMany(cascade={CascadeType.PERSIST,CascadeType.MERGE})
    @JoinTable(name=“task\u user”)
    私人用户

  • 一个表(
    task\u user
    ),用于连接这两个表(通过两列,
    task\u id
    user\u id

我想限制操作,以便只有当用户是某个任务的所有者时,该用户才能访问该任务(即,
task\u user
中有一个带有该用户id的任务id条目)


我目前正在通过
@handlebeforesereal
@handlebeforeseave
事件处理程序实现POST和PUT。使用
@PreAuthorize
或其他方法,是否有办法为任何和所有操作实现这一点?

当然;使用
Repository
作为您自己的存储库的基类,添加
findOne
findAll
save
方法,并在其中添加
@PreAuthorize
注释,所有这些方法都应该可以正常工作。如果按照文档使用
securityevaluationcontextension
,您甚至可以在
@Query
方法中使用主体。你已经试过了吗?谢谢。是的,我试过了。我知道这些存在,但我不知道的是如何a)正确地形成它们(例如,在预授权中,我如何检查“此TaskRecord是否在其用户集中包含请求用户?”以及b)例如,如果我必须使用@Query,则权衡(在编写SQL时)是否值得损失(例如,由于JPA,可以轻松地在数据存储实现之间进行交换)。当然可以;使用
Repository
作为您自己的存储库的基类,添加
findOne
findAll
save
方法,并在其中添加
@PreAuthorize
注释,这一切都应该可以正常工作。如果您使用
SecurityEvaluationContextE,您甚至可以在
@Query
方法中使用主体xtension
根据文档。您已经尝试过了吗?谢谢。是的,我已经尝试过了。我知道这些存在,但我不知道的是如何a)正确地形成它们(例如,在预授权范围内,我如何检查“此任务记录在其用户集中是否包含请求用户?”和b)是否,例如,如果我必须使用@Query,那么(在编写SQL时)所做的权衡是值得的(例如,由于JPA,可以轻松地在数据存储实现之间交换)。