Ich baue gerade eine Grails 1.3.5 App. Es verwendet einen vorhandenen Model-Layer (shared code - no GORM) und ich habe die Tomcat-jndi-Verbindungen dafür in conf/spring/resources.xml erfolgreich konfiguriert und alles funktioniert gut. Ich habe jedoch Probleme, wenn ich Spring-Sicherheit versuche und konfiguriere. Ich benutze NICHT das Frühjahr Sicherheits-Plugin, weil ich die XML-Sicherheitskonfiguration von einem anderen Projekt, das wir bereits ausgeführt haben, verwenden möchte. Dies verwendet Spring 3-Sicherheit. Ich habe die folgenden Schritte auf verschiedenen Blogs gefolgt:Spring Security ohne das Plugin web.xml konfigurieren
- Ran 'Grails install-Vorlagen'
Ich habe folgendes auf den templates/Krieg/web.xml:
<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>
- Ich habe meine Sicherheitsbohnen zum Verzeichnis conf/spring hinzugefügt und validiert.
- Ich habe die Feder Sicherheitsglas Dateien in das Verzeichnis grails lib kopiert. Version 3.0.2
Wenn ich laufen 'Grails Lauf app' erhalte ich eine sehr seltsame Ausnahme mit der 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
ich den Filter auch Code aus anderen Blogs kopiert haben, dass vorschlagen:
<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>
Aber ich bekomme immer noch das gleiche Problem.
Hat jemand einen Ratschlag, was ich als nächstes versuchen sollte? Die nervige Sache ist, dass ich das alles mit einer älteren Version von Grails (1.1.1) mit Version 2 der Sicherheitsmodule hatte, aber jetzt bekomme ich Probleme.
Übrigens habe ich es geschafft, die gleiche App mit Spring Security 2.0.4 arbeiten. Ich habe alles auf die gleiche Weise konfiguriert mit Ausnahme der etwas anderen Sicherheitsdefinitionen. Sicherheit v3 verwendet: org.springframework.web.filter.DelegatingFilterProxy, während v2 verwendet: org.springframework.security.util.FilterToBeanProxy. Ich komme über den obigen Fehler hinaus und bekomme 'Keine Bohne mit dem Namen' Spring Security Filter Chain Proxy 'definiert. Es ist in config/spring/definiert, aber nicht in web-app/WEB-INF/ApplicationContext.xml. Es scheint aber falsch zu sein, die Bean-Defs dort hinzustellen. – Matt