dev_caojiahao/buyer-api/src/main/java/cn/lili/security/BuyerSecurityConfig.java

84 lines
2.9 KiB
Java
Raw Normal View History

2021-05-13 10:41:46 +08:00
package cn.lili.security;
import cn.lili.common.cache.Cache;
import cn.lili.common.security.CustomAccessDeniedHandler;
import cn.lili.common.utils.SpringContextUtil;
import cn.lili.config.properties.IgnoredUrlsProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
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.WebSecurityConfigurerAdapter;
import org.springframework.security.config.annotation.web.configurers.ExpressionUrlAuthorizationConfigurer;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.web.cors.CorsConfigurationSource;
/**
* spring Security 核心配置类 Buyer安全配置中心
*
* @author Chopper
* @version v4.0
* @since 2020/11/14 16:20
*/
@Slf4j
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class BuyerSecurityConfig extends WebSecurityConfigurerAdapter {
/**
* 忽略验权配置
*/
2021-05-13 15:07:03 +08:00
@Autowired
private IgnoredUrlsProperties ignoredUrlsProperties;
2021-05-13 10:41:46 +08:00
/**
* spring security - 权限不足处理
*/
2021-05-13 15:07:03 +08:00
@Autowired
private CustomAccessDeniedHandler accessDeniedHandler;
2021-05-13 10:41:46 +08:00
2021-05-13 15:07:03 +08:00
@Autowired
private Cache<String> cache;
2021-05-13 10:41:46 +08:00
@Override
protected void configure(HttpSecurity http) throws Exception {
ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = http
.authorizeRequests();
2021-06-21 14:14:07 +08:00
//配置的url 不需要授权
2021-05-13 10:41:46 +08:00
for (String url : ignoredUrlsProperties.getUrls()) {
registry.antMatchers(url).permitAll();
}
registry
.and()
2021-06-21 14:14:07 +08:00
//禁止网页iframe
2021-05-13 10:41:46 +08:00
.headers().frameOptions().disable()
.and()
.logout()
.permitAll()
.and()
.authorizeRequests()
2021-06-21 14:14:07 +08:00
//任何请求
2021-05-13 10:41:46 +08:00
.anyRequest()
2021-06-21 14:14:07 +08:00
//需要身份认证
2021-05-13 10:41:46 +08:00
.authenticated()
.and()
2021-06-21 14:14:07 +08:00
//允许跨域
2021-05-13 10:41:46 +08:00
.cors().configurationSource((CorsConfigurationSource) SpringContextUtil.getBean("corsConfigurationSource")).and()
2021-06-21 14:14:07 +08:00
//关闭跨站请求防护
2021-05-13 10:41:46 +08:00
.csrf().disable()
2021-06-21 14:14:07 +08:00
//前后端分离采用JWT 不需要session
2021-05-13 10:41:46 +08:00
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
2021-06-21 14:14:07 +08:00
//自定义权限拒绝处理类
2021-05-13 10:41:46 +08:00
.exceptionHandling().accessDeniedHandler(accessDeniedHandler)
.and()
2021-06-21 14:14:07 +08:00
//添加JWT认证过滤器
2021-05-13 10:41:46 +08:00
.addFilter(new BuyerAuthenticationFilter(authenticationManager(), cache));
}
}