//package com.zy.asrs.wcs.common.security; // //import com.zy.acs.manager.common.constant.Constants; //import com.zy.acs.manager.common.utils.CommonUtil; //import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Configuration; //import org.springframework.http.HttpMethod; //import org.springframework.security.access.AccessDeniedException; //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; //import org.springframework.security.config.http.SessionCreationPolicy; //import org.springframework.security.core.AuthenticationException; //import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; //import org.springframework.security.web.AuthenticationEntryPoint; //import org.springframework.security.web.access.AccessDeniedHandler; //import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; //import org.springframework.stereotype.Component; // //import javax.annotation.Resource; //import javax.servlet.ServletException; //import javax.servlet.http.HttpServletRequest; //import javax.servlet.http.HttpServletResponse; //import java.io.IOException; // ///** // * Spring Security配置 // * // */ //@Configuration //@EnableWebSecurity //@EnableGlobalMethodSecurity(prePostEnabled = true) //public class SecurityConfig extends WebSecurityConfigurerAdapter { // // public static final String[] FILTER_PATH = new String[]{ // "/test/**", // "/rpc/**", // "/api/login", // "/druid/**", // "/swagger-ui.html", // "/swagger-resources/**", // "/webjars/**", // "/v2/api-docs", // "/v3/api-docs", // "/swagger-ui/**" // }; // // @Resource // private JwtAccessDeniedHandler jwtAccessDeniedHandler; // @Resource // private JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; // @Resource // private JwtAuthenticationFilter jwtAuthenticationFilter; // // @Override // protected void configure(HttpSecurity http) throws Exception { // http.authorizeRequests() // .antMatchers(HttpMethod.OPTIONS, "/**") // .permitAll() // .antMatchers(HttpMethod.GET, "/api/file/**", "/api/captcha", "/") // .permitAll() // .antMatchers(FILTER_PATH) // .permitAll() // .anyRequest() // .authenticated() // .and() // .sessionManagement() // .sessionCreationPolicy(SessionCreationPolicy.STATELESS) // .and() // .csrf() // .disable() // .cors() // .and() // .logout() // .disable() // .headers() // .frameOptions() // .disable() // .and() // .exceptionHandling() // .accessDeniedHandler(jwtAccessDeniedHandler) // .authenticationEntryPoint(jwtAuthenticationEntryPoint) // .and() // .addFilterBefore(jwtAuthenticationFilter, UsernamePasswordAuthenticationFilter.class); // } // // @Bean // public BCryptPasswordEncoder bCryptPasswordEncoder() { // return new BCryptPasswordEncoder(); // } // // // 没有访问权限异常处理 // @Component // static class JwtAccessDeniedHandler implements AccessDeniedHandler { // // @Override // public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException e) // throws IOException, ServletException { // CommonUtil.responseError(response, Constants.UNAUTHORIZED_CODE, Constants.UNAUTHORIZED_MSG, e.getMessage()); // } // // } // // // 没有登录异常处理 // @Component // static class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint { // // @Override // public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) // throws IOException, ServletException { // CommonUtil.responseError(response, Constants.UNAUTHENTICATED_CODE, Constants.UNAUTHENTICATED_MSG, // e.getMessage()); // } // // } // //}