【问题标题】:Dynamic role value in Spring @PostAuthorize annotationSpring @PostAuthorize 注解中的动态角色值
【发布时间】: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


【解决方案1】:

正如holmis83所说,它工作得很好,问题来自我在方法签名中错过了gameId变量的@PathVariable

【讨论】:

    猜你喜欢
    • 2011-07-14
    • 2012-09-06
    • 2015-01-01
    • 2017-05-18
    • 2011-11-21
    • 2020-10-25
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    相关资源
    最近更新 更多