Spring Security Grails 3.0 YML映射
我正在看grails spring安全核心v3的文档。我的目标是在yml文件中配置url映射,而不是分散在代码中。他们的文件说,要做到这一点,我们必须做两件事。首先,设置Spring Security Grails 3.0 YML映射,grails,spring-security,Grails,Spring Security,我正在看grails spring安全核心v3的文档。我的目标是在yml文件中配置url映射,而不是分散在代码中。他们的文件说,要做到这一点,我们必须做两件事。首先,设置 securityConfigType: 'InterceptUrlMap' 然后用以下格式概述我们的模式: grails.plugin.springsecurity.interceptUrlMap = [ [pattern: '/', access: ['permitAll']] ] 我已
securityConfigType: 'InterceptUrlMap'
然后用以下格式概述我们的模式:
grails.plugin.springsecurity.interceptUrlMap = [
[pattern: '/', access: ['permitAll']]
]
我已经在下面的代码中完成了:(注意,这是从他们的文档中复制和粘贴的)
但是,当尝试使用新构建的war文件访问我的网页时,我收到一个错误,说明如下:
groovy.lang.MissingMethodException: No signature of method: grails.plugin.springsecurity.ReflectionUtils$_splitMap_closure5.doCall() is applicable for argument types: (java.util.ArrayList) values: [[[pattern:/], [access:[permitAll]]]]
Possible solutions: doCall(java.util.Map), findAll(), findAll(), isCase(java.lang.Object), isCase(java.lang.Object)
我不确定这里的问题是什么。如果我让Grails3.0使用s2快速启动生成的groovy脚本,一切都会按预期进行。然而,考虑到我的其他配置100%都在YML文件中,我当然不想这样做
我是否缺少一些需要设置的明显属性?查看该错误后,我所做的是尝试使用映射列表创建映射。 所以你的代码会变成这样:
interceptUrlMap: [
{pattern: '/', access: ['permitAll']},
{pattern: '/error', access: ['permitAll']},
{pattern: '/index', access: ['permitAll']},
{pattern: '/index.gsp', access: ['permitAll']},
{pattern: '/shutdown', access: ['permitAll']},
{pattern: '/assets/**', access: ['permitAll']},
{pattern: '/**/js/**', access: ['permitAll']},
{pattern: '/**/css/**', access: ['permitAll']},
{pattern: '/**/images/**', access: ['permitAll']},
{pattern: '/**/favicon.ico', access: ['permitAll']},
{pattern: '/login/**', access: ['permitAll']},
{pattern: '/logout/**', access: ['permitAll']}
]
我在本地的Grails 3.0应用程序中使用了这个,它似乎工作得很好。在查看了这个错误之后,我所做的是尝试使用一个映射列表创建映射。 所以你的代码会变成这样:
interceptUrlMap: [
{pattern: '/', access: ['permitAll']},
{pattern: '/error', access: ['permitAll']},
{pattern: '/index', access: ['permitAll']},
{pattern: '/index.gsp', access: ['permitAll']},
{pattern: '/shutdown', access: ['permitAll']},
{pattern: '/assets/**', access: ['permitAll']},
{pattern: '/**/js/**', access: ['permitAll']},
{pattern: '/**/css/**', access: ['permitAll']},
{pattern: '/**/images/**', access: ['permitAll']},
{pattern: '/**/favicon.ico', access: ['permitAll']},
{pattern: '/login/**', access: ['permitAll']},
{pattern: '/logout/**', access: ['permitAll']}
]
我已经在本地的Grails3.0应用程序中使用了它,它似乎工作得很好。在3.2.4中,由于某种原因,它对我不起作用。以下是我们所做的:
interceptUrlMap:
- {pattern: '/password/change**', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/user/create', access: ['IS_AUTHENTICATED_ANONYMOUSLY']}
- {pattern: '/user/save', access: ['IS_AUTHENTICATED_ANONYMOUSLY']}
- {pattern: '/user/**', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/my/**', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/j_spring_security_exit_user', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/j_spring_security_switch_user', access: ['ROLE_ADMIN', 'ROLE_SWITCH_USER']}
- {pattern: '/admin/**', access: ['ROLE_ADMIN']}
在3.2.4中,由于某种原因,这对我不起作用。以下是我们所做的:
interceptUrlMap:
- {pattern: '/password/change**', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/user/create', access: ['IS_AUTHENTICATED_ANONYMOUSLY']}
- {pattern: '/user/save', access: ['IS_AUTHENTICATED_ANONYMOUSLY']}
- {pattern: '/user/**', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/my/**', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/j_spring_security_exit_user', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/j_spring_security_switch_user', access: ['ROLE_ADMIN', 'ROLE_SWITCH_USER']}
- {pattern: '/admin/**', access: ['ROLE_ADMIN']}
更改此项:
interceptUrlMap:
- {pattern: '/password/change**', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/user/create', access: ['IS_AUTHENTICATED_ANONYMOUSLY']}
- {pattern: '/user/save', access: ['IS_AUTHENTICATED_ANONYMOUSLY']}
- {pattern: '/user/**', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/my/**', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/j_spring_security_exit_user', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/j_spring_security_switch_user', access: ['ROLE_ADMIN', 'ROLE_SWITCH_USER']}
- {pattern: '/admin/**', access: ['ROLE_ADMIN']}
为此:
interceptUrlMap: [
{pattern: '/', access: ['permitAll']},
{pattern: '/error', access: ['permitAll']},
{pattern: '/index', access: ['permitAll']},
{pattern: '/index.gsp', access: ['permitAll']},
{pattern: '/shutdown', access: ['permitAll']},
{pattern: '/assets/**', access: ['permitAll']},
{pattern: '/**/js/**', access: ['permitAll']},
{pattern: '/**/css/**', access: ['permitAll']},
{pattern: '/**/images/**', access: ['permitAll']},
{pattern: '/**/favicon.ico', access: ['permitAll']},
{pattern: '/login/**', access: ['permitAll']},
{pattern: '/logout/**', access: ['permitAll']}
]
更改此项:
interceptUrlMap:
- {pattern: '/password/change**', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/user/create', access: ['IS_AUTHENTICATED_ANONYMOUSLY']}
- {pattern: '/user/save', access: ['IS_AUTHENTICATED_ANONYMOUSLY']}
- {pattern: '/user/**', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/my/**', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/j_spring_security_exit_user', access: ['IS_AUTHENTICATED_REMEMBERED']}
- {pattern: '/j_spring_security_switch_user', access: ['ROLE_ADMIN', 'ROLE_SWITCH_USER']}
- {pattern: '/admin/**', access: ['ROLE_ADMIN']}
为此:
interceptUrlMap: [
{pattern: '/', access: ['permitAll']},
{pattern: '/error', access: ['permitAll']},
{pattern: '/index', access: ['permitAll']},
{pattern: '/index.gsp', access: ['permitAll']},
{pattern: '/shutdown', access: ['permitAll']},
{pattern: '/assets/**', access: ['permitAll']},
{pattern: '/**/js/**', access: ['permitAll']},
{pattern: '/**/css/**', access: ['permitAll']},
{pattern: '/**/images/**', access: ['permitAll']},
{pattern: '/**/favicon.ico', access: ['permitAll']},
{pattern: '/login/**', access: ['permitAll']},
{pattern: '/logout/**', access: ['permitAll']}
]
适用于3.1.2版本!非常感谢。适用于3.1.2版本!非常感谢。