2013-12-18 19 views
1

我曾提升當前彈簧安全插件,以Grails的春季安全不能由於登錄頁面呈現給重定向循環

  • 彈簧安全核心-2.0-RC2
  • 彈簧安全用戶界面 - 1.0-RC1

問題

,我發現我的登錄屏幕不再顯示出來。在Chrome中,它說這個頁面有一個重定向循環

STEPS重現問題

所以我試圖創建一個名爲測試,試圖找出問題在全新的應用。

首先,我通過在BuildConfig.groovy添加以下條目安裝了安全和安全的UI插件:

compile ":spring-security-core:2.0-RC2"  
compile ":spring-security-ui:1.0-RC1" 

其次,我跑的快速啓動命令如下:

grails s2-quickstart security Person Authority Requestmap 

它創建了4個域對象,如下名爲security的包:Authority.groovy,Person.groovy,PersonAuthority.groovy和Requestmap.groovy

以及增加了以下我Config.groovy中

// Added by the Spring Security Core plugin: 
grails.plugin.springsecurity.userLookup.userDomainClassName = 'security.Person' 
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'security.PersonAuthority' 
grails.plugin.springsecurity.authority.className = 'security.Authority' 
grails.plugin.springsecurity.requestMap.className = 'security.Requestmap' 
grails.plugin.springsecurity.securityConfigType = 'Requestmap' 
grails.plugin.springsecurity.controllerAnnotations.staticRules = [ 
    '/':        ['permitAll'], 
    '/index':       ['permitAll'], 
    '/index.gsp':      ['permitAll'], 
    '/**/js/**':      ['permitAll'], 
    '/**/css/**':      ['permitAll'], 
    '/**/images/**':     ['permitAll'], 
    '/**/favicon.ico':    ['permitAll'] 
] 

最後,我已經做了Grails的運行程序命令,其中我希望在登錄頁面(AUTH運行應用程序。 GSP),現在是你的代碼不再是一部分,但該插件的(設計)要返回

C\myPathToGrails\.grails\2.2.2\projects\Test\plugins\spring-security-core-2.0-RC2\grails-app\views\login\auth.gsp 

,而是得到了一個空白頁面,說明這個頁面有重定向循環。

我還添加了下面的staticRules,清理應用程序,並重新運行它,看看它是否會解決問題,但重定向消息仍然發生。

'/login/**':      ['permitAll'], 
'/login/auth/**':     ['permitAll'], 
'/login.gsp':      ['permitAll'] 

有人有任何想法如何解決這個問題?

在此先感謝。

回答

3

您使用Requestmap作爲安全配置類型,您的controllerAnnotations.staticRules沒有任何效果。

您需要RequestMap表配置規則,並啓用登錄控制器和公共網頁,以匿名不用登入都可以訪問,如:

new Requestmap(url: '/*', configAttribute: 'IS_AUTHENTICATED_ANONYMOUSLY').save(); 
    new Requestmap(url: '/logout/**', configAttribute: 'IS_AUTHENTICATED_REMEMBERED,IS_AUTHENTICATED_FULLY').save(); 
    new Requestmap(url: '/login/**', configAttribute: 'IS_AUTHENTICATED_ANONYMOUSLY').save() 
    new Requestmap(url: '/index/**', configAttribute: 'IS_AUTHENTICATED_ANONYMOUSLY').save(); 
+0

非常感謝您讓我的一天。這些條目不必在以前的版本中。 – Viriato

+0

我有類似的問題。 http://stackoverflow.com/questions/26726867/grails-2-4-spring-security-asset-pipeline。請幫助 – user2463026

+0

我需要在哪裏添加這些行? –

0

感謝先生伊格納西奧·奧坎波對您有所幫助。

這些行必須在bootstrap.groovy中添加。

非常感謝。

class BootStrap { 

    def springSecurityService 
    def grailsApplication 

    def init = { servletContext -> 

     println "In bootstrap Init" 

     //Added so that these urls can be visible to everyone 
     new Requestmap(url: '/*', configAttribute: 'IS_AUTHENTICATED_ANONYMOUSLY').save(); 
     new Requestmap(url: '/logout/**', configAttribute: 'IS_AUTHENTICATED_REMEMBERED,IS_AUTHENTICATED_FULLY').save(); 
     new Requestmap(url: '/login/**', configAttribute: 'IS_AUTHENTICATED_ANONYMOUSLY').save() 
     new Requestmap(url: '/index/**', configAttribute: 'IS_AUTHENTICATED_ANONYMOUSLY').save(); 


     println 'Bootstrap init done' 


    } 


    def destroy = { 

    } 
} 
相關問題