Spring security Grails Spring安全核心3.2.0.M1-安全注释不起作用

Spring security Grails Spring安全核心3.2.0.M1-安全注释不起作用,spring-security,grails-3.3,Spring Security,Grails 3.3,通过遵循所有迁移路径,我已将Grails和Spring Security升级到最新版本(分别为3.3.0.RC1和3.2.0.M1),但现在我的注释不再有效。控件一直跟踪到我的未授权回调(grails.plugin.springsecurity.adh.errorPage)。 我有自己的枚举支持权限列表,用于填充为我的用户对象正确加载的权限列表,但它们不再在使用hasRole表达式的注释中工作,如下所示 @Secured(["hasAnyRole('PERM_VIEW_REPORTS'"])

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

@Secured(["hasAnyRole('PERM_VIEW_REPORTS'"])
其他表达式工作正常,例如以下表达式

@Secured("authentication.name == 'sys_admin'")
@Secured("hasRole('PERM_VIEW_REPORTS')")
我想没有人对Grails的最新Spring安全版本有过类似的体验。请记住,在我升级之前,上面的方法一直工作得很好,但在迁移路径中,我没有看到任何迹象表明此系统可能存在问题。 提前感谢您的建议。

这是因为在新的Spring Security 3.2.0.M1版本中,“ROLE_u2;”前缀再次被强制使用。从上面可以看出,到目前为止,我一直在使用“PERM_”前缀来表示我使用的是基于权限的范例,而不是基于角色的范例

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

编辑:

原来Spring Security引入了新方法
hasAuthority()
hasAnyAuthority()
,它们不使用默认的角色前缀,因此可以用来代替
hasRole()
hasAnyRole()

我已经分叉并更新了3.2版的Spring安全文档,并发送了一个拉取请求。

请尝试使用

@Secured ('ROLE_USER')
如果您尝试使用多个角色进行保护

@Secured(['ROLE_USER','ROLE_ADMIN'])