Je suis en train de créer une application Grails 1.3.5. Il utilise une couche de modèle existante (code partagé - pas de GORM) et j'ai configuré avec succès les connexions tomcat jndi dans conf/spring/resources.xml et tout fonctionne bien. Cependant, j'ai des problèmes quand j'essaie de configurer la sécurité de Spring. Je n'utilise pas le plugin de sécurité de printemps car je veux utiliser la configuration de sécurité xml d'un autre projet que nous avons déjà lancé. Cela utilise la sécurité de Spring 3. J'ai suivi les étapes suivantes sur divers blogs:Configuration de Spring Security sans les problèmes de plugin web.xml
- Ran Grails install-templates '
j'ajouté ce qui suit à la templates/guerre/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>
- J'ai ajouté mes beans de sécurité au répertoire conf/spring et les ai validés par .
- J'ai copié le fichier de sécurité de printemps sur le répertoire de grails. Version 3.0.2
Quand je lance 'Grails gestion app' Je reçois une exception très étrange avec le 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
J'ai aussi copié le code de filtre d'autres blogs suggérer:
<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>
Mais je reçois toujours le même problème.
Quelqu'un a-t-il des conseils sur ce que je devrais essayer ensuite? Ce qui m'ennuie, c'est que tout cela a fonctionné sur une ancienne version de Grails (1.1.1) avec la version 2 des modules de sécurité mais maintenant j'ai des problèmes.
En passant, j'ai réussi à faire fonctionner la même application en utilisant Spring Security 2.0.4. J'ai tout configuré de la même manière à l'exception des définitions de bean de sécurité légèrement différentes. Security v3 utilise: org.springframework.web.filter.DelegatingFilterProxy alors que v2 utilise: org.springframework.security.util.FilterToBeanProxy. Je passe l'erreur ci-dessus et j'obtiens 'Aucun bean nommé' Spring Security Filter Chain Proxy 'est défini'. C'est défini dans config/spring/mais pas dans web-app/WEB-INF/ApplicationContext.xml. Semble mal d'y mettre des fèves. – Matt