更新代码

This commit is contained in:
JEECG
2024-10-29 17:57:28 +08:00
parent e6a8c76389
commit 23158af648
2 changed files with 46 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
package com.jeecg.modules.jmreport.config;
import com.alibaba.fastjson.JSONObject;
import org.jeecg.modules.jmreport.common.util.OkConvertUtils;
import org.springframework.security.core.context.SecurityContextImpl;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
* @Description: api访问权限过滤器
*
* @author: wangshuai
* @date: 2024/9/25 下午6:22
*/
public class ApiSecurityConfigFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
String loginFrom = req.getHeader("jm_login_from");
if(OkConvertUtils.isNotEmpty(loginFrom)){
String springSecurityContext = req.getHeader("jm_spring_security_context");
if(OkConvertUtils.isNotEmpty(springSecurityContext)){
SecurityContextImpl securityContext = JSONObject.parseObject(springSecurityContext, SecurityContextImpl.class);
HttpSession session = req.getSession();
session.setAttribute("loginFrom", loginFrom);
session.setAttribute("SPRING_SECURITY_CONTEXT", securityContext);
}
}
chain.doFilter(request, response);
}
}

View File

@@ -4,7 +4,9 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
/**
* spring security 配置
@@ -29,15 +31,19 @@ public class SpringSecurityConfig {
"/jmreport/desreport_/**/*.png").permitAll()
// 不需要登录的接口
.antMatchers("/jmreport/excelQueryByTemplate",
"/jmreport/query/report/folder/template",
"/jmreport/img/**",
"/jmreport/download/image",
"/jmreport/verificationToken",
"/jmreport/link/queryByIds",
"/jmreport/test/getUserMsg",
"/jmreport/test/getOrder",
"/jimureport/test/**",
"/jmreport/auto/export/download/**").permitAll()
// 分享页面
.antMatchers("/jmreport/shareView/**",
"/jmreport/exportPdfStream",
"/jmreport/exportAllExcelStream",
"/jmreport/checkParam/**",
"/jmreport/share/verification",
"/jmreport/getQueryInfo",
@@ -52,9 +58,14 @@ public class SpringSecurityConfig {
.loginProcessingUrl("/login")
.successHandler(new CustomLoginSuccessHandler())
.permitAll().and()
.addFilterBefore(new ApiSecurityConfigFilter(), BasicAuthenticationFilter.class)
.logout()
.invalidateHttpSession(true)
.clearAuthentication(true).permitAll();
// 开放iframe访问限制
http.headers().frameOptions().disable();
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.ALWAYS);
http.rememberMe().useSecureCookie(true);
return http.build();
}