ASE-New/src/main/java/com/codesdream/ase/configure/CustomWebSecurityConfig.java

97 lines
3.4 KiB
Java
Raw Normal View History

2020-01-31 08:59:12 +00:00
package com.codesdream.ase.configure;
2020-03-01 07:13:16 +00:00
import com.codesdream.ase.component.permission.*;
import com.codesdream.ase.service.ASEUserDetailsService;
2020-03-01 07:13:16 +00:00
import org.springframework.context.annotation.Bean;
2020-01-31 08:59:12 +00:00
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
2020-01-31 08:59:12 +00:00
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
2020-01-31 08:59:12 +00:00
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
2020-03-01 07:13:16 +00:00
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
2020-01-31 08:59:12 +00:00
import javax.annotation.Resource;
/**
* Spring Security 配置类
* 用于Spring Security相关参数的配置
*/
2020-01-31 08:59:12 +00:00
@Configuration
@EnableWebSecurity
public class CustomWebSecurityConfig extends WebSecurityConfigurerAdapter {
2020-02-14 07:59:40 +00:00
@Resource
ASEUserDetailsService aseUserDetailService;
2020-02-14 07:59:40 +00:00
@Resource
ASEPasswordEncoder asePasswordEncoder;
2020-02-16 10:20:37 +00:00
@Resource
ASESecurityAuthenticationProvider aseSecurityAuthenticationProvider;
2020-03-01 07:13:16 +00:00
@Resource
ASEAuthenticationSuccessHandler successHandler;
@Resource
ASEAuthenticationFailureHandler failureHandler;
@Resource
ASEAuthenticationEntryPoint authenticationEntryPoint;
@Resource
ASEAccessDeniedHandler accessDeniedHandler;
2020-01-31 08:59:12 +00:00
@Override
protected void configure(HttpSecurity http) throws Exception {
2020-03-01 07:13:16 +00:00
http
.authorizeRequests()
2020-01-31 08:59:12 +00:00
.anyRequest().authenticated()
.and()
2020-03-01 07:13:16 +00:00
.csrf().disable()
.logout().permitAll();
2020-03-01 07:13:16 +00:00
http.exceptionHandling()
.authenticationEntryPoint(authenticationEntryPoint)
.accessDeniedHandler(accessDeniedHandler);
// 替换掉原有的UsernamePasswordAuthenticationFilter
http.addFilterBefore(usernamePasswordAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
2020-02-16 10:20:37 +00:00
auth.authenticationProvider(aseSecurityAuthenticationProvider)
.userDetailsService(aseUserDetailService)
2020-02-14 07:59:40 +00:00
.passwordEncoder(asePasswordEncoder);
}
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
2020-02-22 13:41:16 +00:00
.antMatchers(
"/assets/**",
"/register/**",
"/forget/**",
"/not_found/**",
"/error/**",
"/login/**");
2020-01-31 08:59:12 +00:00
}
2020-03-01 07:13:16 +00:00
//注册自定义的UsernamePasswordAuthenticationFilter
@Bean
ASEUsernamePasswordAuthenticationFilter usernamePasswordAuthenticationFilter() throws Exception {
ASEUsernamePasswordAuthenticationFilter filter = new ASEUsernamePasswordAuthenticationFilter();
filter.setAuthenticationSuccessHandler(successHandler);
filter.setAuthenticationFailureHandler(failureHandler);
filter.setRequiresAuthenticationRequestMatcher(
new AntPathRequestMatcher("/login/process", "POST"));
filter.setAuthenticationManager(authenticationManagerBean());
return filter;
}
2020-01-31 08:59:12 +00:00
}