2012-08-25 13 views
41

Referans malzemeden yaylı güvenliği öğreniyorum. 3.1.2.RELEASE sürümünü bırakın. Ben security:http etiketiİstisna: 'SpringSecurityFilterChain' adı verilen fasulye tanımlanmamış

güvenlik context.xml

<security:http auto-config="true"> 
     <security:intercept-url pattern="/**" access="ROLE_USER"/> 
    </security:http> 

web.xml

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath*:*-context.xml</param-value> 
    </context-param> 

    <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> 

    <listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <servlet> 
    <servlet-name>security</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>security</servlet-name> 
    <url-pattern>/</url-pattern> 
    </servlet-mapping> 

güvenlik servlet.xml

gibi yapılandırılmış olması da belirtildiği üzere
<context:component-scan base-package="com.pokuri.security.mvc.controllers"/> 

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> 
     <property name="prefix" value="/WEB-INF/page/"/> 
     <property name="suffix" value=".jsp"/> 
    </bean> 

Ancak, uygulamayı başlattığımda bu özel durumu alıyorum. Güvenlik yapılandırmasını kaldırırsam, yaylı web uygulamam iyi çalışıyor. Stackoverflow'ta aynı türden soruları inceledim. Ama şans yok.

+0

Bunu "kök uygulama içeriğine" veya "DispatcherServlet uygulama içeriğine" ekleyin. Bunu, "AbstractAnnotationConfigDispatcherServletInitializer" öğesini genişleterek kolayca yapabilirsiniz. – smwikipedia

cevap

62

Sorununuzun nedeninin, web uygulamanıza başladığınızda yay güvenliği için xml yapılandırma dosyanızın yüklenememesi olabileceğini düşünüyorum.

böyle web.xml''deki tüm XML yapılandırma dosyaları belirtmelidir Bunu düzeltmek için:

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/spring-security.xml, /WEB-INF/applicationContext.xml</param-value> 
</context-param> 

sonra yapabilirsiniz size sınıf yolunda yapılandırma dosyaları var (değil WEB-INF klasörünü veya alt klasörler var) ise config dosyalarının listesini bu şekilde belirtin;

<listener> 
    <listener-class> 
     org.springframework.web.context.ContextLoaderListener 
    </listener-class> 
</listener> 
+1

ancak web.xml – Pokuri

+0

'da bağlam parametresi ve dinleyici yapılandırması var, evet, bu bağlam parametremdeki sorun. Security-context.xml'yi almanın doğru yolu olmayan classpath *: * - context.xml olarak parametre değerini verdim. Böylece joker karakteri sınıf yoluna değiştirdi: **/* - context.xml. Şimdi her şey düzgün çalışıyor – Pokuri

+2

Not: Kök uygulama bağlamına eklemek zorunda kaldım (uygulama sunucu içeriği değil). –

3

Sadece ApplicationContext içinde fasulye tanımı eklendi

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/root-context.xml, /WEB-INF/spring-security.xml</param-value> 
</context-param> 

<!-- Creates the Spring Container shared by all Servlets and Filters --> 
<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

     <!-- filter declaration for Spring Security --> 
<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> 
10

Bu web.xml ekleyin:

... 
<param-value> 
    classpath:applicationContext.xml, 
    classpath:spitter-security.xml 
</param-value> 
... 

Ve ayrıca yapılandırma dosyalarınızı yükleyecektir özel dinleyici eklemeniz gerekir .xml, Spring sordu:

<bean id="springSecurityFilterChain" class="org.springframework.web.filter.DelegatingFilterProxy"/>