Spring Security 3 Java Config

时间:2015-05-16 07:36:07

标签: java spring security spring-mvc spring-security

我正在将Spring Security从xml迁移到java,我正面临着这个问题:

  

j_spring_security_check:请求的资源不可用。

xml的安全性正常,但切换到java会出错。

这样可以正常使用

Spring security xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:security="http://www.springframework.org/schema/security"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.2.xsd">

    <security:http auto-config="true" use-expressions="true">
        <security:logout logout-success-url="/logout" />
        <security:intercept-url pattern="/userOnly**" access="hasRole('USER')"/>

    </security:http>

    <!-- authentication manager -->
    <security:authentication-manager erase-credentials="true">
        <security:authentication-provider user-service-ref="userService">
            <security:password-encoder ref="encoder" />
        </security:authentication-provider>
    </security:authentication-manager>

    <!-- password encoder -->
    <beans:bean id="encoder" class="org.springframework.security.crypto.password.StandardPasswordEncoder" />
</beans>

安全配置

package com.src.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
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;
import org.springframework.security.crypto.password.StandardPasswordEncoder;

import com.src.service.UserService;

@Configuration
@EnableWebSecurity
@ImportResource(value = "classpath:spring-security-context.xml")
public class SecurityConfig  extends WebSecurityConfigurerAdapter{

    @Bean
    public UserService userService(){
        return new UserService();
    }

}

这不起作用

安全配置

package com.src.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
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;
import org.springframework.security.crypto.password.StandardPasswordEncoder;

import com.src.service.UserService;

@Configuration
@EnableWebSecurity
//@ImportResource(value = "classpath:spring-security-context.xml")
public class SecurityConfig  extends WebSecurityConfigurerAdapter{

    @Bean(name="userService")
    @Override
    public AuthenticationManager authenticationManagerBean() throws Exception {
        return super.authenticationManagerBean();
    }

    @Bean
    public UserService userService(){
        return new UserService();
    }

    @Autowired
    private UserService userService;

    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth
        .userDetailsService(userService)
        .passwordEncoder(new StandardPasswordEncoder());
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/user/**").access("hasRole('USER')")
            .and()
            .formLogin().loginPage("/signin").failureUrl("/signin?error=1")
            .and()
            .logout().logoutSuccessUrl("/logout")
            .and()
            .csrf();
    }

}

0 个答案:

没有答案