|
|
@ -3,12 +3,15 @@ package com.zdxt.auth.framework.config; |
|
|
import com.zdxt.auth.common.utils.security.ShiroUtils; |
|
|
import com.zdxt.auth.common.utils.security.ShiroUtils; |
|
|
import com.zdxt.auth.framework.shiro.jwt.JWTUtils; |
|
|
import com.zdxt.auth.framework.shiro.jwt.JWTUtils; |
|
|
import com.zdxt.domain.auth.User; |
|
|
import com.zdxt.domain.auth.User; |
|
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import org.springframework.stereotype.Component; |
|
|
import org.springframework.stereotype.Component; |
|
|
|
|
|
|
|
|
import javax.servlet.*; |
|
|
import javax.servlet.*; |
|
|
|
|
|
import javax.servlet.annotation.WebFilter; |
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
import java.io.IOException; |
|
|
import java.io.IOException; |
|
|
|
|
|
import java.util.Arrays; |
|
|
import java.util.HashMap; |
|
|
import java.util.HashMap; |
|
|
import java.util.Map; |
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
@ -17,38 +20,83 @@ import java.util.Map; |
|
|
* @author: QingWang.Li |
|
|
* @author: QingWang.Li |
|
|
* @date: 2020/5/27 11:35 |
|
|
* @date: 2020/5/27 11:35 |
|
|
*/ |
|
|
*/ |
|
|
@Component |
|
|
@Slf4j |
|
|
|
|
|
@Component() |
|
|
public class CorsFilter implements Filter { |
|
|
public class CorsFilter implements Filter { |
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) |
|
|
|
|
|
throws IOException, ServletException { |
|
|
|
|
|
HttpServletResponse res = (HttpServletResponse) response; |
|
|
|
|
|
res.addHeader("Access-Control-Allow-Credentials", "true"); |
|
|
|
|
|
res.addHeader("Access-Control-Allow-Origin", "*"); |
|
|
|
|
|
res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT"); |
|
|
|
|
|
res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN,token"); |
|
|
|
|
|
res.addHeader("X-Frame-Options", "SAMEORIGIN"); |
|
|
|
|
|
// res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN");
|
|
|
|
|
|
// User user = ShiroUtils.getSysUser();
|
|
|
|
|
|
// Map<String,Object> payload = new HashMap<>();
|
|
|
|
|
|
// payload.put("id", user.getUserId());
|
|
|
|
|
|
// payload.put("name", user.getPassword());
|
|
|
|
|
|
// String token1 = JWTUtils.sign(payload);
|
|
|
|
|
|
// res.addHeader("token", token1);
|
|
|
|
|
|
|
|
|
|
|
|
// if (((HttpServletRequest) request).getMethod().equals("OPTIONS")) {
|
|
|
|
|
|
// response.getWriter().println("ok");
|
|
|
// public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
|
|
|
// return;
|
|
|
// throws IOException, ServletException {
|
|
|
// }
|
|
|
// HttpServletResponse res = (HttpServletResponse) response;
|
|
|
// TODO 暂时允许options 判断请求方法是否为OPTIONS
|
|
|
// res.addHeader("Access-Control-Allow-Credentials", "true");
|
|
|
|
|
|
// res.addHeader("Access-Control-Allow-Origin", "*");
|
|
|
|
|
|
// res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
|
|
|
|
|
|
// res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN,token");
|
|
|
|
|
|
// res.addHeader("X-Frame-Options", "SAMEORIGIN");
|
|
|
|
|
|
//// res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN");
|
|
|
|
|
|
//// User user = ShiroUtils.getSysUser();
|
|
|
|
|
|
//// Map<String,Object> payload = new HashMap<>();
|
|
|
|
|
|
//// payload.put("id", user.getUserId());
|
|
|
|
|
|
//// payload.put("name", user.getPassword());
|
|
|
|
|
|
//// String token1 = JWTUtils.sign(payload);
|
|
|
|
|
|
//// res.addHeader("token", token1);
|
|
|
|
|
|
//
|
|
|
|
|
|
//// if (((HttpServletRequest) request).getMethod().equals("OPTIONS")) {
|
|
|
|
|
|
//// response.getWriter().println("ok");
|
|
|
|
|
|
//// return;
|
|
|
|
|
|
//// }
|
|
|
|
|
|
//// TODO 暂时允许options 判断请求方法是否为OPTIONS
|
|
|
// if (((HttpServletRequest) request).getMethod().equals("OPTIONS")) {
|
|
|
// if (((HttpServletRequest) request).getMethod().equals("OPTIONS")) {
|
|
|
// // 设置响应头信息,禁止OPTIONS请求
|
|
|
// // 设置响应头信息,禁止OPTIONS请求
|
|
|
// res.setHeader("Allow", "GET, POST, HEAD, PUT, DELETE");
|
|
|
// res.setHeader("Allow", "GET, POST, HEAD, PUT, DELETE");
|
|
|
// res.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
|
|
|
// res.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
|
|
|
// return;
|
|
|
// return;
|
|
|
// }
|
|
|
// }
|
|
|
chain.doFilter(request, response); |
|
|
// chain.doFilter(request, response);
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { |
|
|
|
|
|
//配置可信域名
|
|
|
|
|
|
String[] authhosts = {"http://10.132.108.3:85","http://jdm.szssfj.cn","http://localhost:85"}; |
|
|
|
|
|
String authost = ""; |
|
|
|
|
|
HttpServletRequest httprequest = (HttpServletRequest) request; |
|
|
|
|
|
String origin = httprequest.getHeader("Origin"); |
|
|
|
|
|
log.info("Origin头:{}",origin); |
|
|
|
|
|
HttpServletResponse httpresponse = (HttpServletResponse) response; |
|
|
|
|
|
if(origin != null && !Arrays.asList(authhosts).contains(origin)) { |
|
|
|
|
|
httpresponse.sendError(403); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
else { |
|
|
|
|
|
for(int i=0;i<authhosts.length;i++) { |
|
|
|
|
|
if(i!=authhosts.length - 1) { |
|
|
|
|
|
authost = authost + authhosts[i]+","; |
|
|
|
|
|
}else { |
|
|
|
|
|
authost = authost + authhosts[i]; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
httpresponse.addHeader("Access-Control-Allow-Origin", authost); |
|
|
|
|
|
httpresponse.addHeader("Access-Control-Allow-Methods", |
|
|
|
|
|
"GET, POST"); |
|
|
|
|
|
httpresponse.addHeader("Access-Control-Allow-Headers", |
|
|
|
|
|
"origin, content-type, accept, x-requested-with, sid, mycustom, smuser"); |
|
|
|
|
|
httpresponse.addHeader("Access-Control-Allow-Credentials", "true"); |
|
|
|
|
|
httpresponse.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT"); |
|
|
|
|
|
httpresponse.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN,token"); |
|
|
|
|
|
httpresponse.addHeader("X-Frame-Options", "SAMEORIGIN"); |
|
|
|
|
|
// res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN");
|
|
|
|
|
|
// TODO 暂时允许options 判断请求方法是否为OPTIONS
|
|
|
|
|
|
if (((HttpServletRequest) request).getMethod().equals("OPTIONS")) { |
|
|
|
|
|
// 设置响应头信息,禁止OPTIONS请求
|
|
|
|
|
|
httpresponse.setHeader("Allow", "GET, POST, HEAD, PUT, DELETE"); |
|
|
|
|
|
httpresponse.setStatus(HttpServletResponse.SC_METHOD_NOT_ALLOWED); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
chain.doFilter(request, response); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
@Override |
|
|
@Override |
|
|
public void destroy() { |
|
|
public void destroy() { |
|
|
|