В настоящее время я создаю приложение Grails 1.3.5. Он использует существующий уровень модели (общий код - нет GORM), и я успешно сконфигурировал подключения tomcat jndi для него в conf/spring/resources.xml, и все работает хорошо. Однако у меня возникают проблемы, когда я пытаюсь настроить Spring security. Я НЕ использую плагин весны безопасности, потому что я хочу использовать конфигурацию безопасности xml из другого проекта, который у нас уже запущен. Это использует безопасность Spring 3. Я следовал следующие шаги на различных блогах:Настройка Spring Security без проблем с plugin web.xml
- RAN 'Grails установки-шаблоны'
Я добавил следующее в шаблоны/войны/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>
- Я добавил свои бобы безопасности в каталог conf/spring и получил .
- Я скопировал весеннюю банку безопасности файлы к grails lib . Версия 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>
Но у меня по-прежнему возникают те же проблемы.
Есть ли у кого-нибудь советы о том, что я должен попробовать дальше? Досадно, что я все это работал над более старой версией Grails (1.1.1) с версией 2 модулей безопасности, но теперь у меня возникают проблемы.
Кстати, мне удалось получить то же самое приложение, используя Spring Security 2.0.4. Я настроил все одинаково, за исключением немного разных определений компонентов безопасности. Безопасность v3 использует: org.springframework.web.filter.DelegatingFilterProxy, тогда как v2 использует: org.springframework.security.util.FilterToBeanProxy. Я пропустил вышеуказанную ошибку и получил «Нет bean с именем« Spring Security Filter Chain Proxy ». Он определен в config/spring /, но не в веб-приложении/WEB-INF/ApplicationContext.xml. Кажется, неправильно помещать bean defs там. – Matt 2010-11-26 15:48:54