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.
81 lines
2.7 KiB
81 lines
2.7 KiB
package com.fr.plugin.ipsso.filter; |
|
|
|
import com.fr.base.ServerConfig; |
|
import com.fr.decision.fun.impl.AbstractGlobalRequestFilterProvider; |
|
import com.fr.decision.webservice.login.LogInOutResultInfo; |
|
import com.fr.decision.webservice.utils.DecisionServiceConstants; |
|
import com.fr.decision.webservice.v10.login.event.LogInOutEvent; |
|
import com.fr.event.EventDispatcher; |
|
import com.fr.log.FineLoggerFactory; |
|
import com.fr.plugin.ipsso.utils.FRUtils; |
|
import com.fr.plugin.ipsso.utils.Utils; |
|
import com.fr.record.analyzer.EnableMetrics; |
|
import com.fr.stable.StringUtils; |
|
|
|
import javax.servlet.FilterChain; |
|
import javax.servlet.http.Cookie; |
|
import javax.servlet.http.HttpServletRequest; |
|
import javax.servlet.http.HttpServletResponse; |
|
import javax.servlet.http.HttpSession; |
|
|
|
@EnableMetrics |
|
public class SSOFilter extends AbstractGlobalRequestFilterProvider { |
|
@Override |
|
public String filterName() { |
|
return "ipssoFilter"; |
|
} |
|
|
|
@Override |
|
public String[] urlPatterns() { |
|
return new String[]{"/*"}; |
|
} |
|
|
|
@Override |
|
public void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain chain ){ |
|
String token = req.getParameter("token"); |
|
|
|
|
|
if(Utils.isNotNullStr(token)){ |
|
writeToken2Cookie(res,token,-1); |
|
} |
|
HttpSession session = req.getSession(true); |
|
|
|
req.setAttribute(DecisionServiceConstants.FINE_AUTH_TOKEN_NAME,token); |
|
|
|
session.setAttribute(DecisionServiceConstants.FINE_AUTH_TOKEN_NAME, token); |
|
|
|
release(req,res,chain); |
|
} |
|
|
|
private void writeToken2Cookie(HttpServletResponse var1, String var2, int var3) { |
|
try { |
|
if (StringUtils.isNotEmpty(var2)) { |
|
Cookie var4 = new Cookie("fine_auth_token", var2); |
|
long var5 = var3 == -2 ? 1209600000L : (long)var3; |
|
var4.setMaxAge((int)var5); |
|
var4.setPath(ServerConfig.getInstance().getCookiePath()); |
|
var1.addCookie(var4); |
|
Cookie var7 = new Cookie("fine_remember_login", String.valueOf(var3 == -2 ? -2 : -1)); |
|
var7.setMaxAge((int)var5); |
|
var7.setPath(ServerConfig.getInstance().getCookiePath()); |
|
var1.addCookie(var7); |
|
} else { |
|
FineLoggerFactory.getLogger().error("empty token cannot save."); |
|
} |
|
} catch (Exception var8) { |
|
FineLoggerFactory.getLogger().error(var8.getMessage(), var8); |
|
} |
|
|
|
} |
|
|
|
|
|
//放行拦截器 |
|
private void release(HttpServletRequest req, HttpServletResponse res, FilterChain chain) { |
|
try{ |
|
chain.doFilter(req,res); |
|
}catch (Exception e){ |
|
FRUtils.FRLogInfo("拦截失败"); |
|
} |
|
} |
|
} |
|
|
|
|