2017-09-13 72 views
0

我已经通过遵循所有迁移路径将Grails和Spring Security升级到最新版本(分别为3.3.0.RC1和3.2.0.M1),但是现在我的注释不再有效。控制继续到我未经授权的回调(grails.plugin.springsecurity.adh.errorPage)。 我有我自己的枚举支持的权限列表,我用它来填充我的用户对象正确加载的权限列表,但他们不再使用hasRole表达式在我的批注中工作,如下所示;Grails Spring Security Core 3.2.0.M1 - 安全注解不起作用

@Secured(["hasAnyRole('PERM_VIEW_REPORTS'"]) 

其他表达式都工作正常,如以下

@Secured("authentication.name == 'sys_admin'") 
@Secured("hasRole('PERM_VIEW_REPORTS')") 

我不认为任何人有过与最新的Spring Security发布Grails的任何类似的经历。请记住,在升级之前,上述操作完美无缺,但我没有看到迁移路径中的任何内容,表明此系统可能存在问题。 提前感谢您的任何建议。

回答

0

在新的Spring Security 3.2.0.M1版本中,这又回到了“ROLE_”前缀。从上面可以看出,我到目前为止正在使用“PERM_”前缀来表明我正在使用基于角色的范例的权限。

我希望将它添加到插件的迁移指南中,因为它是一个重大的遗漏AFAIC。我希望这将成为未来版本中插件的配置选项。

编辑:

原来的Spring Security引入了新的方法和hasAuthority()hasAnyAuthority()不使用默认的角色前缀,这样可以代替hasRole()hasAnyRole()使用。

我分叉并更新了3.2版的Spring Security文档并发送了一个pull请求。

0

@Secured ('ROLE_USER') 

尝试,如果你想有一个以上的角色固定

@Secured(['ROLE_USER','ROLE_ADMIN']) 
相关问题