2012-10-07 55 views
1

我目前正在使用Grails應用程序,並使用帶有Core和UI插件的Spring Security框架。Grails Spring Security UI請求映射配置

幾乎所有工作都很好:用戶創建,編輯,刪除等。唯一的問題是請求映射,它不能正常工作。當我打電話requestmap /創建我得到以下錯誤:

URI /xxx/requestmap/create 
Class java.lang.NullPointerException 
Message Cannot get property 'clazz' on null object 

Around line 81 of grails-app/controllers/grails/plugins/springsecurity/ui/AbstractS2UiController.groovy 
78: } 
79: 
80: protected Class<?> lookupRequestmapClass() { 
81:  grailsApplication.getDomainClass(lookupRequestmapClassName()).clazz 
82: } 
83:} 

我在Config.groovy中配置的Spring Security如下:

grails.plugins.springsecurity.userLookup.userDomainClassName = 'xxx.User' 
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'xxx.UserRole' 
grails.plugins.springsecurity.authority.className = 'xxx.Role' 
grails.plugins.springsecurity.requestMap.className = 'Requestmap' 
grails.plugins.springsecurity.securityConfigType = grails.plugins.springsecurity.SecurityConfigType.Requestmap 

我還使用了以下插件在我BuildConfig.groovy:

plugins { 
    runtime ":hibernate:$grailsVersion" 
    runtime ":resources:1.1.6" 

    // Uncomment these (or add new ones) to enable additional resources capabilities 
    //runtime ":zipped-resources:1.0" 
    //runtime ":cached-resources:1.0" 
    //runtime ":yui-minify-resources:0.1.4" 

    build ":tomcat:$grailsVersion" 
    runtime ":database-migration:1.1" 
    compile ':cache:1.0.0' 

    // Spring Security Core 
    compile ":spring-security-core:1.2.7.3" 

    // Spring Security UI (+ Dependencies) 
    compile ":spring-security-ui:0.2" 
    compile ":mail:1.0" 
    runtime ":jquery:1.7.2" 
    compile ":jquery-ui:1.8.15" 
    compile ":famfamfam:1.0.1" 

    // Twitter Bootstrap 
    // exlude is workaround for svn issue with bootstrap and grails 2.1.x 
    compile (":twitter-bootstrap:2.0.2.25") { excludes 'svn' } 
    runtime ':fields:1.3' 
} 

的requestmap搜索形式出現,而是拋出一個異常搜索時:

URI /xxx/requestmap/requestmapSearch 
Class org.hibernate.hql.ast.QuerySyntaxException 
Message xxx.Requestmap is not mapped [SELECT COUNT(DISTINCT r) FROM xxx.Requestmap r WHERE 1=1 ] 
Around line 46 of grails-app/controllers/grails/plugins/springsecurity/ui/RequestmapController.groovy 
43:   } 
44:  } 
45: 
46:  int totalCount = lookupUserClass().executeQuery("SELECT COUNT(DISTINCT r) $hql", queryParams)[0] 
47: 
48:  Integer max = params.int('max') 
49:  Integer offset = params.int('offset') 

我正在處理這個錯誤一段時間,做了我在文檔中找到的所有內容。與另一個插件結合使用時,這是Spring Security中的一個錯誤嗎?沒有requestmaps,Spring Security UI插件對我來說是毫無意義的。我需要這個工作。

回答

0

您在grails.plugins.springsecurity.requestMap.classNamegrails.plugins.springsecurity.userLookup.userDomainClassNamegrails.plugins.springsecurity.userLookup.authorityJoinClassName但不指定包(用xxx代替),它只是'Requestmap' - 是一個錯字?

其他錯誤不同(GORM問題,但不是UI插件配置問題) - 「xxx.Requestmap未映射」。這表明域類是錯誤的。它是否在用戶和角色類的grails-app/domain中?它是否在其包裝的正確文件夾中?我的猜測是,它是在默認包中,但您將其移動到xxx包,但沒有添加包聲明。

1

Config.groovy中:

import grails.plugins.springsecurity.SecurityConfigType 

grails.plugins.springsecurity.securityConfigType = SecurityConfigType.Requestmap 
grails.plugins.springsecurity.requestMap.className = "sa.Requestmap" 

在上述"sa.Requestmap"sa是包名和Requestmap是如下域類:

package sa 

class Requestmap { 
    String url 
    String configAttribute 

    static mapping = { 
    cache true 
    } 

    static constraints = { 
    url blank : false, unique : true 
    configAttribute blank : false 
    } 
}