2017-01-07 7 views
1

新しいGrails 3.2.4アプリケーションが生成されました。私はいくつかのドメインオブジェクト、コントローラ、サービスを生成してから、アプリケーションをコンパイルして実行します。私はbuild.gradleに次の行を追加しました。Grails 3.2.4 Springセキュリティプラグインの追加後にアプリケーションがロードされない3.1.1

dependencies { 
     ... 
     compile "org.grails.plugins:spring-security-core:3.1.1" 
     ... 
    } 

次に、the plugin docsで指定されているように、次のコマンドを実行しました。私は、このコマンドが生成されることをapplication.groovyで指さ私はすでに、ユーザー、役割、およびのUserRoleのクラスが定義されていた

grails s2-quickstart --uiOnly 

、だけでなく、定義:

grails.plugin.springsecurity.active = true 

は、私はまた、いくつかの用法を追加しましたいくつかの私の意見に<sec:ifNotGranted>タグの私の知る限り、私は他に何もする必要はありません、ドキュメントから言うことができるように

。 Spring Securityのプロパティは、上記でリンクされているドキュメントに従って、プラグインによって提供されるDefaultSecurityConfig.groovyファイルで定義されたデフォルト値を持つ必要があります。しかし、アプリケーションは今実行されません。私が得た最初のエラーは:

groovy.lang.MissingMethodException: No signature of method: static grails.plugin.springsecurity.SpringSecurityUtils.findFilterChainNames() is applicable for argument types: (org.grails.config.NavigableMap$NullSafeNavigator, java.lang.Boolean, java.lang.Boolean, java.lang.Boolean, java.lang.Boolean, java.lang.Boolean, groovy.util.ConfigObject) values: [[:], false, false, false, false, false, [:]] 
Possible solutions: findFilterChainNames(java.lang.Object, boolean, boolean, boolean, boolean, boolean, boolean) 
    at groovy.lang.MetaClassImpl.invokeStaticMissingMethod(MetaClassImpl.java:1503) 
    at groovy.lang.MetaClassImpl.invokeStaticMethod(MetaClassImpl.java:1489) 
    at org.codehaus.groovy.runtime.callsite.StaticMetaClassSite.call(StaticMetaClassSite.java:53) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) 
    at grails.plugin.springsecurity.ReflectionUtils.findFilterChainNames(ReflectionUtils.groovy:214) 

私はthe code where findFilterChainNames is calledに見て、問題が(上記のドキュメントによれば)真または偽のいずれかのデフォルトのブール値を持つ必要がありますいくつかのプロパティがあるということですが、代わりに彼ら定義されていないため、ここに示すエラーが発生します。私は、application.groovyでこれらのプロパティを自分で定義すると、このエラーになることを確認しました。ただし、Spring Securityコードが実行される次の未定義プロパティーのために、別のエラーに置き換えられます。

私はthe code where the default values from DefaultSecurityConfig.groovy should be merged into the values defined in the application.groovyを通じて段階。しかし、DefaultSecurityConfigがクラスパスから読み込まれ、解析されると、ファイルに表示されるプロパティは、返されたコンフィグレーションマップには終りません。私はマニュアルの指示に従って

私は、私が間違ってやっているかを把握することはできません。私は同様の問題をオンラインで検索しようとしましたが、何も見つかりませんでした。誰にもアイデアがありますか?

+0

個人的には試したことがありません--uiOnly 'grails s2-quickstart com.yourapp User Role'とにかく動作を変更するかどうか試してみてください。 http://grails-plugins.github.io/grails-spring-security-core/v3/index.html#s2-quickstartあなたのメソッドは存在しません。そのページの文書はあまりありません – Vahid

+0

悲しいことに、行動の変化はありません: – Schmick

答えて

0

の仔は、私はそれを考え出しました。私は、提供されたDefaultSecurityConfigからプロパティをマージする必要があるコードにさらに進んでいました。そして、a)DefaultSecurityConfigファイルをステップ実行していたときに、ブレークポイントがコードと並んでいないこと、b)新しいgrails.pluginの代わりに古いgrails.pluginsという接頭辞を使用していました。これにより、DefaultSecurityConfigの古いバージョン(および他のGroovyクラス)が適切なバージョンではなく引き込まれていたことが疑わしいものになりました。私は〜/ .grails、〜/ .gradle、〜/ .m2ディレクトリをすべてキャッシュされたjarとクラスから空にしました。その後、私のアプリケーションは適切にSpring Securityを初期化するように見えます(Spring SecurityをLogoutハンドラとして使用するBeanを見つけることができないために失敗しました。なぜそうは思わないのですが、それは無関係ですこの問題に)。

0

私はgrails 3.2.8を使用しています。春のセキュリティLDAPを設定した後、フォームベースの認証がうまくいきました。私は基本認証に切り替えたときに

しかし、私は同じエラーが発生しました。私はldapの設定小道具のためにapplication.propertiesファイルを使い、基本認証をtrueに設定していました。

grails.plugin.springsecurity.useBasicAuth = true 

application.ymlとすべての作業ファイルに追加されました。

関連する問題