【发布时间】:2018-01-11 07:34:03
【问题描述】:
我在 REST Web 服务的 URL 中设置了 gameId 路径变量,我不想向在特定游戏桌上具有特定角色的用户授予权限,当用户登录时,我通过将角色与 gameId 连接起来创建权限,我试过这个,但它不起作用:
@PreAuthorize("hasRole('ROLE_GAMER_'+#gameId)")
【问题讨论】:
-
@CIPHER007 至少一个至少一个角色
-
您可以对多个角色使用授权,例如
@PreAuthorize("hasRole('ROLE_GAMER_1') or hasRole('ROLE_GAMER_2')")。是否符合您的要求。 -
@CIPHER007 它可以使用硬编码的 gameId 但不能使用 #gameId 表达式
-
'ROLE_GAMER_' + #gameId是一个 Spring 表达式。hasRole不支持 Spring 表达式。这没有在任何地方明确记录,但很清楚from the source code。 -
@MK-rou 你添加了吗
@EnableGlobalMethodSecurity(prePostEnabled = true)
标签: spring rest spring-boot spring-security