Java Spring数据REST中的资源所有权限制
使用Spring Data 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\
- 具有一组任务的用户实体类:
@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,可以轻松地在数据存储实现之间交换)。