You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
3.6 KiB
102 lines
3.6 KiB
3 years ago
|
package com.fr.plugin.core;
|
||
|
|
||
|
import com.fr.data.NetworkHelper;
|
||
|
import com.fr.decision.authority.data.User;
|
||
|
import com.fr.decision.fun.impl.AbstractGlobalRequestFilterProvider;
|
||
|
import com.fr.decision.webservice.v10.login.LoginService;
|
||
|
import com.fr.decision.webservice.v10.user.UserService;
|
||
|
import com.fr.log.FineLoggerFactory;
|
||
|
import com.fr.log.FineLoggerProvider;
|
||
|
import com.fr.plugin.core.ws.BizServiceAxis;
|
||
|
import com.fr.plugin.core.ws.BizServiceAxisServiceLocator;
|
||
|
import com.fr.plugin.transform.ExecuteFunctionRecord;
|
||
|
import com.fr.plugin.transform.FunctionRecorder;
|
||
|
import com.fr.stable.StringUtils;
|
||
|
import com.fr.web.utils.WebUtils;
|
||
|
import org.dom4j.Document;
|
||
|
import org.dom4j.DocumentException;
|
||
|
import org.dom4j.Element;
|
||
|
import org.dom4j.io.SAXReader;
|
||
|
|
||
|
import javax.servlet.FilterChain;
|
||
|
import javax.servlet.FilterConfig;
|
||
|
import javax.servlet.http.HttpServletRequest;
|
||
|
import javax.servlet.http.HttpServletResponse;
|
||
|
import java.io.ByteArrayInputStream;
|
||
|
import java.net.URL;
|
||
|
import java.net.URLEncoder;
|
||
|
import java.nio.charset.StandardCharsets;
|
||
|
import java.util.Enumeration;
|
||
|
|
||
|
@FunctionRecorder
|
||
|
public class CKLoginFilter extends AbstractGlobalRequestFilterProvider {
|
||
|
@Override
|
||
|
public String filterName() {
|
||
|
return "ckfilter";
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String[] urlPatterns() {
|
||
|
return new String[]{
|
||
|
"/rewrewrewrw321"
|
||
|
};
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
@ExecuteFunctionRecord
|
||
|
public void init(FilterConfig filterConfig) {
|
||
|
super.init(filterConfig);
|
||
|
}
|
||
|
private String getUrl(HttpServletRequest request) {
|
||
|
return request.getRequestURL()+"?"+request.getQueryString();
|
||
|
}
|
||
|
private void sendRedirect(HttpServletResponse res, String url) {
|
||
|
res.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
|
||
|
res.setHeader("Location", url);
|
||
|
}
|
||
|
@Override
|
||
|
public void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain filterChain) {
|
||
|
try {
|
||
|
FineLoggerProvider logger = FineLoggerFactory.getLogger();
|
||
|
String userID = req.getParameter("userID");
|
||
|
String userName = req.getParameter("userName");
|
||
|
String PID = req.getParameter("PID");
|
||
|
String sessionID = req.getParameter("sessionID");
|
||
|
String WSUrl = req.getParameter("WSUrl");
|
||
|
String verifySSO = req.getParameter("verifySSO");
|
||
|
if (StringUtils.isNotBlank(userID) && StringUtils.isNotBlank(userName) && StringUtils.isNotBlank(PID) && StringUtils.isNotBlank(sessionID) && StringUtils.isNotBlank(WSUrl)) {
|
||
|
|
||
|
String originalURL = NetworkHelper.getOriginalURL(req,false);
|
||
|
String url = getUrl(req);
|
||
|
logger.info("服访问地地址++++++:{} 自己生成的URL : {}", originalURL,url);
|
||
|
login(req, res, PID);
|
||
|
sendRedirect(res, url);
|
||
|
return;
|
||
|
|
||
|
}
|
||
|
filterChain.doFilter(req, res);
|
||
|
} catch (Exception e) {
|
||
|
e.printStackTrace();
|
||
|
FineLoggerFactory.getLogger().error(e.getMessage(), e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
private void login(HttpServletRequest req, HttpServletResponse res, String username) {
|
||
|
String token = null;
|
||
|
try {
|
||
|
token = LoginService.getInstance().login(req, res, username);
|
||
|
req.setAttribute("fine_auth_token", token);
|
||
|
} catch (Exception e) {
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private static Document getAccountFromXML(String xml) throws DocumentException {
|
||
|
//1.创建Reader对象
|
||
|
SAXReader reader = new SAXReader();
|
||
|
//2.加载xml
|
||
|
return reader.read(new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8)));
|
||
|
}
|
||
|
|
||
|
}
|