据我了解,在Spring Security中,您可以使用两种安全方法。我可能只授权一种方法,但是如果我通过自己拥有授权的另一种方法输入,我很好...除非是针对另一种服务。我想知道是否有一种方法(通过设置或注释)即使通过调用不同的服务也能保持授权。
以下是具有ROLE_READ的用户的路径:
Controller -> Svc1.getData -> sv2.lookupUser
这是另一个路径ROLE_ADMIN:
ControllerB -> Sv2.lookupUser
代码大纲:
@Service
class Svc1 {
@Resource
Svc2 svc2
....
@Secured(["ROLE_READ"])
Iterable<Data> getData() {
//do stuff here
User user = svc2.lookupUser()
}
@Service
class Svc2 {
....
@Secured(["ROLE_ADMIN"])
User lookupUser() {
//do stuff here
user
}
同样,我知道,如果这些方法在同一Service中,那一切都很好。我知道,如果我使用“ ROLE_READ” 创建另一个 lookupUserRestricted 方法,则可以委托给目标方法,从而解决问题。只是好奇是否有其他选择。
所以
Controller -> Svc1.getData -> ["ROLE_READ"]svc2.lookupUserRestricted -> sv2.lookupUser