带有 Spring 安全性的 Grails 2.4 2 3RC
我的 Config.groovy 上有这个
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
'/': ['permitAll'],
'/index': ['permitAll'],
'/index.gsp': ['permitAll'],
'/**/js/**': ['permitAll'],
'/**/css/**': ['permitAll'],
'/**/images/**': ['permitAll'],
'/**/favicon.ico': ['permitAll']
]
grails.plugin.springsecurity.successHandler.defaultTargetUrl = "/home/index"
但这让我重定向到
assets/favicon.ico
我的 HomeController 就是这样
@Secured(['ROLE_ADMIN', 'ROLE_USER'])
def index() {
if (SpringSecurityUtils.ifAllGranted('ROLE_ADMIN')) {
redirect controller: 'admin', action: 'index'
return
}
}
然后我在我的 UrlMapping 中修改它:
"/"(controller: 'home', action:'index')
为什么我总是发送错误的路径?
更新:使用另一台计算机,它将我重定向到/asset/grails_logo.png
请您参考如下方法:
听起来您遇到的问题与我将 Grails 1.x 应用程序升级到 2.4.2 时遇到的问题类似。当您尝试访问受 Spring Security 授权规则保护的 URL/页面并且您未登录时,它会将您重定向到登录页面。成功登录后,它会将您重定向到您请求的 URL。在这种情况下,您的 favicon.ico 和 grails_logo.png 受到授权规则的保护,我猜是无意的,因此它将您重定向到登录页面。成功登录后,它会将您重定向到 favicon.ico 或 grails_logo.png URL,因为这是在授权失败时请求的 protected URL。相应地更改您的授权规则(如果您在两个位置都有 Assets ,则可能需要同时执行这两个操作):
如果您使用的是 Asset Pipeline 插件,请使用:
'/assets/**': ['permitAll']
如果您正在使用类似资源 插件的东西,请使用:
'/css/**': ['permitAll'],
'/js/**': ['permitAll'],
'/images/**': ['permitAll']