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.
105 lines
3.8 KiB
105 lines
3.8 KiB
3 years ago
|
package com.fr.plugin.filter;
|
||
|
|
||
|
import com.fr.base.ServerConfig;
|
||
|
import com.fr.data.NetworkHelper;
|
||
|
import com.fr.decision.authority.base.constant.type.operation.ManualOperationType;
|
||
|
import com.fr.decision.authority.base.constant.type.operation.SyncOperationType;
|
||
|
import com.fr.decision.config.FSConfig;
|
||
|
import com.fr.decision.fun.impl.AbstractGlobalRequestFilterProvider;
|
||
|
import com.fr.decision.mobile.terminal.TerminalHandler;
|
||
|
import com.fr.decision.webservice.v10.login.LoginService;
|
||
|
import com.fr.decision.webservice.v10.login.TokenResource;
|
||
|
import com.fr.json.JSONObject;
|
||
|
import com.fr.log.FineLoggerFactory;
|
||
|
import com.fr.plugin.USAAPassport;
|
||
|
import com.fr.stable.StringUtils;
|
||
|
import com.fr.stable.web.Device;
|
||
|
import com.fr.web.utils.WebUtils;
|
||
|
import com.fr.plugin.context.PluginContexts;
|
||
|
|
||
|
import javax.servlet.FilterChain;
|
||
|
import javax.servlet.FilterConfig;
|
||
|
import javax.servlet.ServletException;
|
||
|
import javax.servlet.http.Cookie;
|
||
|
import javax.servlet.http.HttpServletRequest;
|
||
|
import javax.servlet.http.HttpServletResponse;
|
||
|
import java.io.IOException;
|
||
|
|
||
|
public class UASSLOGIN1Filter extends AbstractGlobalRequestFilterProvider {
|
||
|
@Override
|
||
|
public String filterName() {
|
||
|
return "UASSLOGIN1Filter";
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String[] urlPatterns() {
|
||
|
return new String[]{
|
||
|
"/decision/login",
|
||
|
};
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void init(FilterConfig filterConfig) {
|
||
|
super.init(filterConfig);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain filterChain) {
|
||
|
try {
|
||
|
if (PluginContexts.currentContext().isAvailable()) {
|
||
|
doLoginCheck(req, res, filterChain);
|
||
|
} else {
|
||
|
WebUtils.printAsString(res, "插件名:《xxxxx》插件id:com.eco.plugin.xxx.uasslogin 插件授权过期 请联系销售");
|
||
|
}
|
||
|
} catch (Exception e) {
|
||
|
FineLoggerFactory.getLogger().error(e.getMessage(), e);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void doLoginCheck(HttpServletRequest req, HttpServletResponse res, FilterChain filterChain) throws ServletException, IOException {
|
||
|
if (StringUtils.equals("POST", req.getMethod())) {
|
||
|
USAAPassport usaaPassport = new USAAPassport();
|
||
|
FSConfig.getInstance().setPassport(ManualOperationType.KEY, usaaPassport);
|
||
|
usaaPassport = new USAAPassport();
|
||
|
FSConfig.getInstance().setPassport(SyncOperationType.KEY, usaaPassport);
|
||
|
filterChain.doFilter(req, res);
|
||
|
} else {
|
||
|
filterChain.doFilter(req, res);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
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) {
|
||
|
FineLoggerFactory.getLogger().error(e.getMessage(), e);
|
||
|
FineLoggerFactory.getLogger().error("login failed");
|
||
|
}
|
||
|
FineLoggerFactory.getLogger().error("login success");
|
||
|
}
|
||
|
|
||
|
private boolean isLogin(HttpServletRequest request) {
|
||
|
String oldToken = TokenResource.COOKIE.getToken(request);
|
||
|
return oldToken != null && checkTokenValid(request, (String) oldToken);
|
||
|
}
|
||
|
|
||
|
private boolean checkTokenValid(HttpServletRequest req, String token) {
|
||
|
try {
|
||
|
Device device = NetworkHelper.getDevice(req);
|
||
|
LoginService.getInstance().loginStatusValid(token, TerminalHandler.getTerminal(req, device));
|
||
|
return true;
|
||
|
} catch (Exception ignore) {
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
private static void setCookie(HttpServletResponse response, String name, String value) {
|
||
|
Cookie cookie = new Cookie(name, value);
|
||
|
cookie.setPath("/");
|
||
|
response.addCookie(cookie);
|
||
|
}
|
||
|
|
||
|
}
|