123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- package com.zoniot.ccrc.security;
- import com.zoniot.ccrc.security.integration.IntegrationSecurityConfig;
- import com.zoniot.ccrc.security.mobile.MobileLoginUserDetailService;
- import com.zoniot.ccrc.security.mobile.MobileSecurityConfig;
- import com.zoniot.ccrc.security.openid.OpenidSecurityConfig;
- import com.zoniot.ccrc.security.smsCode.SmsCodeCheckUserFilter;
- import com.zoniot.ccrc.security.smsCode.SmsCodeSecurityConfig;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Qualifier;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.http.HttpMethod;
- 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.builders.WebSecurity;
- import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
- import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
- import org.springframework.security.config.http.SessionCreationPolicy;
- import org.springframework.security.web.AuthenticationEntryPoint;
- import org.springframework.security.web.access.AccessDeniedHandler;
- import org.springframework.security.web.authentication.AuthenticationFailureHandler;
- import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
- import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
- import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
- /**
- * SpringSecurity 核心配置类
- */
- @Configuration
- @EnableWebSecurity
- @EnableGlobalMethodSecurity(prePostEnabled = true) // 启用方法级别的权限认证
- public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
- @Autowired
- @Qualifier("userAuthenticationSuccessHandler")
- private AuthenticationSuccessHandler authenticationSuccessHandler;
- @Autowired
- @Qualifier("userAuthenticationFailureHandler")
- private AuthenticationFailureHandler authenticationFailureHandler;
- @Autowired
- @Qualifier("userLogoutSuccessHandler")
- private LogoutSuccessHandler logoutSuccessHandler;
- @Autowired
- @Qualifier("userAuthenticationEntryPoint")
- private AuthenticationEntryPoint authenticationEntryPoint;
- @Autowired
- @Qualifier("userAccessDeniedHandler")
- private AccessDeniedHandler accessDeniedHandler;
- @Autowired
- private JwtAuthenticationTokenFilter jwtAuthenticationTokenFilter;
- @Autowired
- private SecurityCrossFilter securityCrossFilter;
- @Autowired
- private MobileSecurityConfig mobileSecurityConfig;
- @Autowired
- private MobileLoginUserDetailService mobileLoginUserDetailService;
- @Autowired
- private SmsCodeCheckUserFilter smsCodeCheckUserFilter;
- @Autowired
- private SmsCodeSecurityConfig smsCodeSecurityConfig;
- @Autowired
- private OpenidSecurityConfig openidSecurityConfig;
- @Autowired
- private IntegrationSecurityConfig integrationSecurityConfig;
- /*@Autowired
- public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
- auth.userDetailsService(mobileLoginUserDetailService).passwordEncoder(passwordEncoder());
- }*/
- @Override
- protected void configure(AuthenticationManagerBuilder auth) throws Exception {
- auth.userDetailsService(mobileLoginUserDetailService);
- }
- @Override
- public void configure(WebSecurity web) throws Exception {
- web.ignoring().antMatchers( "/swagger-ui.html", "/webjars/**", "/swagger-resources/**", "/v2/**", "/test/**")
- .antMatchers( "/validateCode/image", "/validateCode/test")
- .antMatchers("/statics/**", "/sms/send/**","/sms/v2/send/**","/file/**")
- .antMatchers("/druid/**")
- .antMatchers("/integration/user/save","/integration/user/del")
- .antMatchers("/external/getSiteCustomerIds");
- }
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- http
- //.addFilterBefore(smsCodeCheckUserFilter, UsernamePasswordAuthenticationFilter.class)
- .csrf().disable()
- // 基于token,所以不需要session
- .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
- .and().authorizeRequests()
- .antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
- // .anyRequest().authenticated()
- .and()
- .formLogin()
- .successHandler(authenticationSuccessHandler)//登陆成功处理
- .failureHandler(authenticationFailureHandler)//登陆失败
- .and().logout().permitAll()
- .logoutSuccessHandler(logoutSuccessHandler).permitAll();
- http.exceptionHandling()
- .authenticationEntryPoint(authenticationEntryPoint)//未授权处理
- // 已经认证的用户访问自己没有权限的资源处理
- .accessDeniedHandler(accessDeniedHandler)//权限不足处理
- //.and().addFilterBefore(securityCrossFilter, UsernamePasswordAuthenticationFilter.class)
- .and().addFilterBefore(jwtAuthenticationTokenFilter, UsernamePasswordAuthenticationFilter.class)
- .apply(mobileSecurityConfig)
- .and()
- .apply(smsCodeSecurityConfig)
- .and()
- .apply(integrationSecurityConfig)
- .and()
- .apply(openidSecurityConfig);
- }
- }
|