2015-02-24 10 views
1

I'v только что создали MVC проект Spring с помощью Eclipse, а затем я добавил эти классы:Spring Security с Spring MVC не работает

@Configuration 
@EnableWebMvcSecurity 
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
     auth.inMemoryAuthentication().withUser("user").password("password").roles("USER"); 
    } 
} 

и

public class SpringSecurityInitializer 
     extends AbstractSecurityWebApplicationInitializer { 

} 

так же, как The Reference says, но я получаю исключение:

SEVERE: Exception starting filter springSecurityFilterChain 
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'springSecurityFilterChain' is defined 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:529) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1095) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:277) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) 
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1097) 
at org.springframework.web.filter.DelegatingFilterProxy.initDelegate(DelegatingFilterProxy.java:324) 
at org.springframework.web.filter.DelegatingFilterProxy.initFilterBean(DelegatingFilterProxy.java:235) 
at org.springframework.web.filter.GenericFilterBean.init(GenericFilterBean.java:199) 
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279) 
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:109) 
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4615) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5222) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) 
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) 
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:714) 
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:581) 
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1683) 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:745) 

Я теряю рассудок с этим, потому что я не получаю чтобы добавить безопасность в мое приложение, не могли бы вы помочь мне с этой головной болью?

Я добавил @Order(1) к моему SpringSecurityInitializer и все еще не работал с тем же исключением. Может быть, я что-то забыл, просто дайте мне знать;)

ответ

-1

Вам нужно настроить фильтр Spring Security в web.xml:

<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

Но это эквивалентно классу 'SpringSecurityInitializer', то есть то, что ссылка говорит. Осмотрите [ЭТОТ РУКОВОДСТВО] (http://spring.io/blog/2013/07/03/spring-security-java-config-preview-web-security/#abstractsecurity-webapplicationinitializer) –

+0

@ Vercryger Да, вы являются правильными. Однако ваш фильтр * order * может быть отключен, добавьте '@Order (1)' в ваш 'SpringSecurityInitializer'. –

+0

Да, вы правы. Я не заметил этот класс в вашем вопросе. Он должен работать таким образом –

Смежные вопросы