2015-11-30 84 views
1

我試圖使用JavaConfig實現Spring Security 4,但我不知道如何將它與已經實現的XML配置結合使用。Spring Security 4使用JavaConfig與XML結合使用

我SecurityConfig類,如下所示:

package com.wirecard.attendapp.security; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.context.annotation.ImportResource; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; 
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; 
import org.springframework.security.config.annotation.web.builders.HttpSecurity; 
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 

@Configuration 
@ImportResource({ "classpath:root-context.xml" }) 
@EnableWebSecurity 
@EnableGlobalMethodSecurity(prePostEnabled = true, jsr250Enabled = true) 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

ApplicationContext context = new ClassPathXmlApplicationContext("root-context.xml"); 

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

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http.authorizeRequests().anyRequest().hasRole("USER").and().formLogin().loginPage("/login").permitAll().and() 
      .logout().permitAll(); 
} 
} 

而空SecurityInitializer類:

package com.wirecard.attendapp.security; 

    import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; 

    public class SecurityInitializer extends AbstractSecurityWebApplicationInitializer { 

    } 

在我的根,我的context.xml試圖添加這一點,但它不工作:

<beans> 
<!-- first, define your individual @Configuration classes as beans --> 
<bean class="com.wirecard.attendapp.security.SecurityConfig"/> 

<!-- be sure to include the JavaConfig bean post-processor --> 
<bean class="org.springframework.config.java.process.ConfigurationPostProcessor"/> 

在我的web.xml中,我有這個:

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

我應該如何使用它才能正常工作?現在它不會從我的應用程序加載任何頁面。提前致謝。

回答

0
  1. 您的安全配置並不需要root-context.xml
  2. SecurityInitializer引用確實需要引用安全config

    package org.springframework.security.samples.config; 
    import org.springframework.security.web.context.*; 
    
    public class SecurityWebApplicationInitializer 
         extends AbstractSecurityWebApplicationInitializer { 
    
        public SecurityWebApplicationInitializer() { 
         super(SecurityConfig.class); 
        } 
    } 
    
  3. root-context.xml不需要引用安全配置 - 刪除
+0

它仍然是,我不會加載任何頁面。 – Lenusska1414

+0

什麼是錯誤? – jny

+0

以下是我加載任何頁面後獲得的內容 Lenusska1414

相關問題