現在、Grails 1.3.5アプリケーションをビルドしています。既存のモデル層(共有コード - GORMなし)を使用し、conf/spring/resources.xml内のtomcat jndi接続を正常に設定しました。すべて正常に動作しています。しかし、Springのセキュリティを設定しようとすると問題が発生します。私は既に実行している別のプロジェクトのXMLセキュリティ設定を使用したいので、私は春のセキュリティプラグインを使用していません。これはSpring 3のセキュリティを使用します。私は、テンプレート/戦争/ web.xmlに以下を追加プラグインなしでSpring Securityを設定するweb.xmlの問題
- 蘭 'Grailsのインストール・テンプレート'
:
<filter>
<filter-name>Spring Security Filter Chain Proxy</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<init-param>
<param-name>targetBeanName</param-name>
<param-value>filterChainProxy</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Spring Security Filter Chain Proxy</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>
私は様々なブログで次の手順に従ってきました
- conf/springディレクトリに自分のセキュリティBeanを追加し、 を検証しました。
- 私は、灰色の ディレクトリに、春のセキュリティジャー ファイルをコピーしました。
私は実行バージョン3.0.2「Grailsのアプリを実行して」私はweb.xmlのと非常に奇妙な例外を取得:
2010-11-26 12:16:02,512 INFO [startup.ContextConfig] No default web.xml
2010-11-26 12:16:02,518 ERROR [digester.Digester] End event threw exception
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:925)
...
Caused by: java.lang.IllegalArgumentException: Filter mapping specifies an unknown filter name hiddenHttpMethod
at org.apache.catalina.core.StandardContext.addFilterMap(StandardContext.java:2251)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:925)
at org.apache.tomcat.util.digester.SetNextRule.end(SetNextRule.java:193)
at org.apache.tomcat.util.digester.Rule.end(Rule.java:229)
at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1140)
... 437 more
私も他のブログからのフィルタコードをコピーしたものを提案:
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
しかし、私はまだ同じ問題を抱えています。
私は次に何を試してみるべきだとアドバイスしていますか?厄介なのは、バージョン2のセキュリティモジュールで古いバージョンのGrails(1.1.1)を使っていたことですが、今は問題が発生しています。
ところで、私はSpring Security 2.0.4を使って同じアプリケーションを動かすことができました。わずかに異なるセキュリティBean定義を除いて、すべて同じ方法で設定しました。セキュリティv3では、org.springframework.web.filter.DelegatingFilterProxyが使用されますが、v2ではorg.springframework.security.util.FilterToBeanProxyが使用されます。上記のエラーが発生し、「Spring Security Filter Chain Proxyが定義されていません」というBeanが定義されていません。 config/spring /で定義されていますが、web-app/WEB-INF/ApplicationContext.xmlでは定義されていません。しかし、そこに豆のデフを入れるのは間違っているようだ。 – Matt