在Spring Security中@Secured批注中是否带有'或'条件的多个角色


问题内容

我在项目中使用spring和spring security 4。我必须使用ROLE_USER或ROLE_TIMER_TASK调用dao方法。

目前,我正在使用此注释-

 @Secured({"ROLE_USER", "ROLE_TIMER_TASK"})

@Secured注释仅允许同时具有两种角色的那些用户使用,但我想由对此具有任何一种角色的用户调用此方法。

用户是否可以从此角色中任一个角色并调用此方法,有可能吗?


问题答案:

对于 ,请改用@PreAuthorize注释:

@PreAuthorize("hasRole('ROLE_USER') or hasRole('ROLE_TIMER_TASK')")

在Spring Security版本4中,ROLE_前缀可以省略:

@PreAuthorize("hasRole('USER') or hasRole('TIMER_TASK')")

确保在安全配置中启用了预注释和后注释。