1

私は現在Grailsアプリケーションに取り組んでおり、コアプラグインとUIプラグインでSpringSecurityフレームワークを使用しています。

ユーザーの作成、編集、削除など、ほぼすべてが正常に機能しています。唯一の問題は、リクエストマップが正しく機能していないことです。requestmap / createを呼び出すと、次のエラーが発生します。

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でSpringSecurityを次のように構成しました。

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'
}

リクエストマップ検索フォームが表示されますが、検索時に例外がスローされます。

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のバグですか、それともここで何が起こりますか?リクエストマップがなければ、SpringSecurityUIプラグインは私には無意味です。私はそれが機能する必要があります。

4

2 に答える 2

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
  }
}
于 2013-05-24T03:30:24.827 に答える
0

でパッケージ (xxx に置き換え) を指定しますが、 では指定しgrails.plugins.springsecurity.userLookup.userDomainClassNameませ grails.plugins.springsecurity.userLookup.authorityJoinClassNameん。grails.plugins.springsecurity.requestMap.classNameそれ'Requestmap'はタイプミスですか?

もう 1 つのエラーは異なります (GORM の問題ですが、UI プラグインの構成の問題ではありません) - 「xxx.Requestmap がマップされていません」。これは、ドメイン クラスが間違っていることを示しています。User クラスと Role クラスを含む grails-app/domain にありますか? パッケージの正しいフォルダーにありますか? 私の推測では、それはデフォルトのパッケージにありましたが、xxx パッケージに移動しましたが、package ステートメントを追加していませんでした。

于 2012-10-07T14:34:32.550 に答える