带有 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'] 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!