| | |
| | | package com.zy.asrs.wms.common.security; |
| | | |
| | | import com.zy.asrs.wms.common.constant.Constants; |
| | | import com.zy.asrs.wms.utils.HttpUtils; |
| | | 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.security.web.authentication.www.BasicAuthenticationFilter; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | /** |
| | | * Spring Security配置 |
| | | * |
| | | */ |
| | | @Configuration |
| | | @EnableWebSecurity |
| | | @EnableGlobalMethodSecurity(prePostEnabled = true) |
| | | public class SecurityConfig extends WebSecurityConfigurerAdapter { |
| | | |
| | | public static final String[] FILTER_PATH = new String[]{ |
| | | "/api/auth/host", |
| | | "/api/language/json", |
| | | "/test/**", |
| | | "/api/login", |
| | | "/api/code/auth", |
| | | "/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; |
| | | @Resource |
| | | private CacheFilter cacheFilter; |
| | | |
| | | @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) |
| | | .addFilterBefore(cacheFilter, BasicAuthenticationFilter.class); |
| | | } |
| | | |
| | | @Bean |
| | | public BCryptPasswordEncoder bCryptPasswordEncoder() { |
| | | return new BCryptPasswordEncoder(); |
| | | } |
| | | |
| | | // 没有访问权限异常处理 |
| | | @Component |
| | | static class JwtAccessDeniedHandler implements AccessDeniedHandler { |
| | | |
| | | @Override |
| | | public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException e) { |
| | | HttpUtils.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) { |
| | | HttpUtils.responseError(response, Constants.UNAUTHENTICATED_CODE, Constants.UNAUTHENTICATED_MSG, |
| | | e.getMessage()); |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | | package com.zy.asrs.wms.common.security;
|
| | |
|
| | | import com.zy.asrs.wms.common.constant.Constants;
|
| | | import com.zy.asrs.wms.utils.HttpUtils;
|
| | | 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.security.web.authentication.www.BasicAuthenticationFilter;
|
| | | import org.springframework.stereotype.Component;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | | import javax.servlet.http.HttpServletRequest;
|
| | | import javax.servlet.http.HttpServletResponse;
|
| | |
|
| | | /**
|
| | | * Spring Security配置
|
| | | *
|
| | | */
|
| | | @Configuration
|
| | | @EnableWebSecurity
|
| | | @EnableGlobalMethodSecurity(prePostEnabled = true)
|
| | | public class SecurityConfig extends WebSecurityConfigurerAdapter {
|
| | |
|
| | | public static final String[] FILTER_PATH = new String[]{
|
| | | "/api/auth/host",
|
| | | "/api/language/json",
|
| | | "/test/**",
|
| | | "/api/login",
|
| | | "/api/code/auth",
|
| | | "/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;
|
| | | @Resource
|
| | | private CacheFilter cacheFilter;
|
| | |
|
| | | @Override
|
| | | protected void configure(HttpSecurity http) throws Exception {
|
| | | http.authorizeRequests()
|
| | | .antMatchers("/**").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)
|
| | | .addFilterBefore(cacheFilter, BasicAuthenticationFilter.class);
|
| | | }
|
| | |
|
| | |
|
| | | @Bean
|
| | | public BCryptPasswordEncoder bCryptPasswordEncoder() {
|
| | | return new BCryptPasswordEncoder();
|
| | | }
|
| | |
|
| | | // 没有访问权限异常处理
|
| | | @Component
|
| | | static class JwtAccessDeniedHandler implements AccessDeniedHandler {
|
| | |
|
| | | @Override
|
| | | public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException e) {
|
| | | HttpUtils.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) {
|
| | | HttpUtils.responseError(response, Constants.UNAUTHENTICATED_CODE, Constants.UNAUTHENTICATED_MSG,
|
| | | e.getMessage());
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | }
|