|
|
|
@ -3,6 +3,7 @@ package weaver.interfaces.filter;
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
import org.apache.commons.logging.Log;
|
|
|
|
|
import org.apache.commons.logging.LogFactory;
|
|
|
|
|
import org.apache.dubbo.common.utils.StringUtils;
|
|
|
|
|
import weaver.conn.RecordSet;
|
|
|
|
|
import weaver.general.BaseBean;
|
|
|
|
|
import weaver.general.Util;
|
|
|
|
@ -22,7 +23,10 @@ public class PortalLoginFilter implements Filter
|
|
|
|
|
private List<String> uncheckurl_list = new ArrayList<String>();
|
|
|
|
|
private List<String> uncheck_sessionurl_list = new ArrayList<String>();
|
|
|
|
|
private List<String> uncheck_sessionurl_custom_list = new ArrayList<String>();
|
|
|
|
|
private List<String> bpmHostList = new ArrayList<String>();
|
|
|
|
|
private String path = "/bpm" ;
|
|
|
|
|
private String portal_homepage = "" ;
|
|
|
|
|
private String portal_user_auth = "" ;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void init(FilterConfig filterConfig) throws ServletException {
|
|
|
|
@ -30,9 +34,11 @@ public class PortalLoginFilter implements Filter
|
|
|
|
|
this.application = filterConfig.getServletContext();
|
|
|
|
|
BaseBean bb = new BaseBean();
|
|
|
|
|
|
|
|
|
|
portal_homepage = bb.getPropValue("PORTAL_INFO","portal_homepage");
|
|
|
|
|
portal_user_auth = bb.getPropValue("PORTAL_INFO","portal_user_auth");
|
|
|
|
|
|
|
|
|
|
String uncheck_init = bb.getPropValue("weaver_session_filter","uncheckurl");
|
|
|
|
|
if(!"".equals(uncheck_init)){
|
|
|
|
|
|
|
|
|
|
String[] uncheck_url_arr = uncheck_init.split(";");
|
|
|
|
|
for(int i=0;i<uncheck_url_arr.length;i++){
|
|
|
|
|
if(uncheck_url_arr[i].startsWith(path)){
|
|
|
|
@ -42,6 +48,7 @@ public class PortalLoginFilter implements Filter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String uncheck_session_init = bb.getPropValue("weaver_session_filter","unchecksessionurl");
|
|
|
|
|
if(!"".equals(uncheck_session_init)){
|
|
|
|
|
String[] uncheck_session_url_arr = uncheck_session_init.split(";");
|
|
|
|
@ -67,6 +74,15 @@ public class PortalLoginFilter implements Filter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String bpm_host_array = bb.getPropValue("PORTAL_INFO","bpm_host_array");
|
|
|
|
|
if(!"".equals(bpm_host_array))
|
|
|
|
|
{
|
|
|
|
|
String[] bpm_host_arr = bpm_host_array.split(";");
|
|
|
|
|
for(int i=0;i<bpm_host_arr.length;i++){
|
|
|
|
|
bpmHostList.add(bpm_host_arr[i]);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@ -78,21 +94,23 @@ public class PortalLoginFilter implements Filter
|
|
|
|
|
HttpServletRequest request = (HttpServletRequest)servletRequest;
|
|
|
|
|
HttpServletResponse response = (HttpServletResponse)servletResponse;
|
|
|
|
|
|
|
|
|
|
String ipAddress = request.getRequestURL().toString(); //先从nginx自定义配置获取,,可能unknown
|
|
|
|
|
//bb.writeLog("ipAddress1:"+ipAddress);
|
|
|
|
|
// if(ipAddress.contains("10.10.192.187")){
|
|
|
|
|
// //bb.writeLog("10.10.192.187");
|
|
|
|
|
// }else{
|
|
|
|
|
|
|
|
|
|
String portal_homepage = bb.getPropValue("PORTAL_INFO","portal_homepage");
|
|
|
|
|
boolean isExcludedPage = false;
|
|
|
|
|
|
|
|
|
|
String getRequestURI = request.getRequestURI(); //请求地址
|
|
|
|
|
String requestURL = request.getRequestURL().toString();
|
|
|
|
|
if(!bpmHostList.isEmpty()){
|
|
|
|
|
for(String bpm_host_val : bpmHostList){
|
|
|
|
|
if(requestURL.contains(bpm_host_val)){
|
|
|
|
|
isExcludedPage = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
String getRequestURI = request.getRequestURI();
|
|
|
|
|
if(!isExcludedPage){
|
|
|
|
|
String path_lowerCase = getRequestURI.toLowerCase();
|
|
|
|
|
if (path_lowerCase.endsWith(".cur") || path_lowerCase.endsWith(".ico") || path_lowerCase.endsWith(".css") || path_lowerCase.endsWith(".htm") || path_lowerCase.endsWith(".js") || path_lowerCase.endsWith(".html") || path_lowerCase.endsWith(".png") || path_lowerCase.endsWith(".jpg") || path_lowerCase.endsWith(".gif")) {
|
|
|
|
|
// 如果发现是css或者js文件,直接放行
|
|
|
|
|
isExcludedPage = true;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!isExcludedPage)
|
|
|
|
|
{
|
|
|
|
@ -107,7 +125,6 @@ public class PortalLoginFilter implements Filter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(!isExcludedPage)
|
|
|
|
|
{
|
|
|
|
|
if(uncheck_sessionurl_custom_list.contains(getRequestURI) || uncheck_sessionurl_custom_list.contains(path+"/"+getRequestURI)){
|
|
|
|
@ -115,13 +132,12 @@ public class PortalLoginFilter implements Filter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bb.writeLog("getRequestURI:"+getRequestURI+" isExcludedPage:"+isExcludedPage);
|
|
|
|
|
|
|
|
|
|
if(!isExcludedPage){
|
|
|
|
|
|
|
|
|
|
if(!isExcludedPage)
|
|
|
|
|
{
|
|
|
|
|
User loginuser = (User) request.getSession(true).getAttribute("weaver_user@bean");
|
|
|
|
|
if (loginuser == null)
|
|
|
|
|
{
|
|
|
|
|
bb.writeLog("getRequestURI:"+getRequestURI+" isExcludedPage:"+isExcludedPage);
|
|
|
|
|
String uid = "" ;
|
|
|
|
|
String cookies = request.getHeader("cookie");
|
|
|
|
|
if(!"".equals(cookies))
|
|
|
|
@ -147,17 +163,14 @@ public class PortalLoginFilter implements Filter
|
|
|
|
|
// CLOUD_APP_NAME=dbeptest7_pot-uportal-core;
|
|
|
|
|
// CLOUD_APP_ID=44074
|
|
|
|
|
|
|
|
|
|
if(!"null".equals(uid) && uid !=null && !"".equals(uid) && uid !="")
|
|
|
|
|
if(StringUtils.isNotEmpty(uid))
|
|
|
|
|
{
|
|
|
|
|
try{
|
|
|
|
|
|
|
|
|
|
String url = bb.getPropValue("PORTAL_INFO","portal_user_auth");
|
|
|
|
|
bb.writeLog("url:"+url);
|
|
|
|
|
bb.writeLog("url:"+portal_user_auth);
|
|
|
|
|
//String url = "http://172.16.25.133/portal-web/user/current" ;
|
|
|
|
|
HttpRequestUtil HttpRequestUtil = new HttpRequestUtil();
|
|
|
|
|
Map<String,String> headMap = new HashMap<String,String>();
|
|
|
|
|
headMap.put("Cookie","SESSION="+uid);
|
|
|
|
|
String msg = HttpRequestUtil.httpGet1(url,headMap,"UTF-8");
|
|
|
|
|
String msg = HttpRequestUtil.httpGet1(portal_user_auth,headMap,"UTF-8");
|
|
|
|
|
if(!"".equals(msg))
|
|
|
|
|
{
|
|
|
|
|
JSONObject jsonObject = JSONObject.parseObject(msg);
|
|
|
|
@ -221,71 +234,32 @@ public class PortalLoginFilter implements Filter
|
|
|
|
|
user_new.setLoginip(request.getRemoteAddr());
|
|
|
|
|
request.getSession(true).setMaxInactiveInterval(60 * 60 * 24);
|
|
|
|
|
request.getSession(true).setAttribute("weaver_user@bean", user_new);
|
|
|
|
|
|
|
|
|
|
}else{
|
|
|
|
|
response.setHeader("Access-Control-Allow-Origin", "*"); //解决跨域访问报错
|
|
|
|
|
response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
|
|
|
|
|
response.setHeader("Access-Control-Max-Age", "3600"); //设置过期时间
|
|
|
|
|
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, client_id, uuid, Authorization");
|
|
|
|
|
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // 支持HTTP 1.1.
|
|
|
|
|
response.setHeader("Pragma", "no-cache"); // 支持HTTP 1.0. response.setHeader("Expires", "0");
|
|
|
|
|
response.sendRedirect(portal_homepage);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
|
|
response.setHeader("Access-Control-Allow-Origin", "*"); //解决跨域访问报错
|
|
|
|
|
response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
|
|
|
|
|
response.setHeader("Access-Control-Max-Age", "3600"); //设置过期时间
|
|
|
|
|
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, client_id, uuid, Authorization");
|
|
|
|
|
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // 支持HTTP 1.1.
|
|
|
|
|
response.setHeader("Pragma", "no-cache"); // 支持HTTP 1.0. response.setHeader("Expires", "0");
|
|
|
|
|
|
|
|
|
|
response.sendRedirect(portal_homepage);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
|
|
response.setHeader("Access-Control-Allow-Origin", "*"); //解决跨域访问报错
|
|
|
|
|
response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
|
|
|
|
|
response.setHeader("Access-Control-Max-Age", "3600"); //设置过期时间
|
|
|
|
|
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, client_id, uuid, Authorization");
|
|
|
|
|
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // 支持HTTP 1.1.
|
|
|
|
|
response.setHeader("Pragma", "no-cache"); // 支持HTTP 1.0. response.setHeader("Expires", "0");
|
|
|
|
|
response.sendRedirect(portal_homepage);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
|
|
|
|
|
response.setHeader("Access-Control-Allow-Origin", "*"); //解决跨域访问报错
|
|
|
|
|
response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
|
|
|
|
|
response.setHeader("Access-Control-Max-Age", "3600"); //设置过期时间
|
|
|
|
|
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, client_id, uuid, Authorization");
|
|
|
|
|
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // 支持HTTP 1.1.
|
|
|
|
|
response.setHeader("Pragma", "no-cache"); // 支持HTTP 1.0. response.setHeader("Expires", "0");
|
|
|
|
|
|
|
|
|
|
response.sendRedirect(portal_homepage);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}catch (Exception e3){
|
|
|
|
|
bb.writeLog("e---2:"+e3);
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
// response.setHeader("Access-Control-Allow-Origin", "*"); //解决跨域访问报错
|
|
|
|
|
// response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
|
|
|
|
|
// response.setHeader("Access-Control-Max-Age", "3600"); //设置过期时间
|
|
|
|
|
// response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, client_id, uuid, Authorization");
|
|
|
|
|
// response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // 支持HTTP 1.1.
|
|
|
|
|
// response.setHeader("Pragma", "no-cache"); // 支持HTTP 1.0. response.setHeader("Expires", "0");
|
|
|
|
|
|
|
|
|
|
response.setHeader("Access-Control-Allow-Origin", "*"); //解决跨域访问报错
|
|
|
|
|
response.setHeader("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");
|
|
|
|
|
response.setHeader("Access-Control-Max-Age", "3600"); //设置过期时间
|
|
|
|
|
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, client_id, uuid, Authorization");
|
|
|
|
|
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // 支持HTTP 1.1.
|
|
|
|
|
response.setHeader("Pragma", "no-cache"); // 支持HTTP 1.0. response.setHeader("Expires", "0");
|
|
|
|
|
|
|
|
|
|
String url = portal_homepage;
|
|
|
|
|
response.sendRedirect(url);
|
|
|
|
|
response.sendRedirect(portal_homepage);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// }
|
|
|
|
|
filterChain.doFilter(request, response);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|