package com.fileupload.util;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.crystaldecisions.sdk.framework.CrystalEnterprise;
import com.crystaldecisions.sdk.framework.IEnterpriseSession;
import com.crystaldecisions.sdk.framework.ISessionMgr;
import com.crystaldecisions.sdk.framework.ITrustedPrincipal;
import com.crystaldecisions.sdk.occa.security.ILogonTokenMgr;
import com.mysap.sso.SSO2Ticket;
import com.vigthinking.util.ApplicationProperties;
/**
* 功能:URL过滤器
* @author zxq
* 2010年7月16日 10:11:55
*/
public class UrlFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest)request;
HttpServletResponse responseHttp = (HttpServletResponse) response;
@SuppressWarnings("unused")
HttpSession session = req.getSession();
try{
/***/
//URL
// String url = req.getRequestURI();
//
// //EP传过来的用户名
// String newUserName = req.getParameter("userName");
// //原来系统SESSION中的用户名
// String oldUserName = (String)session.getAttribute("userName");
//
//
// if((oldUserName==null&&newUserName!=null) || (newUserName!=null&&!newUserName.equals(oldUserName))){
// //校验该用户是否在本系统存在
// //暂不校验
//
// session.setAttribute("userName", newUserName);
//
//
// System.out.println("---------------用户:"+newUserName+"进入系统---------------");
//
// }else if(url.indexOf("start") >= 0 || url.indexOf("top")>= 0 || url.indexOf("left")>= 0 ){
// if(oldUserName==null){
// session.setAttribute("userName", newUserName);
// }
// }else if(oldUserName!=null){
//
// }else{
//// String rootpath = req.getContextPath();
//// String sendUrl = rootpath + "/jsp/sysErrorPage.html";
//// responseHttp.sendRedirect(sendUrl);
// //System.out.println(url);
// }
// System.out.println(url);
//原来系统SESSION中的用户名
String oldUserName = (String)session.getAttribute("userName");
if(oldUserName == null || oldUserName.equals("")){
/**
* 从 EP 获取用户名 -----------------开始--------------------
*
* */
Object[] o = null;
SSO2Ticket.loadLib();
Cookie[] all_Cookies = req.getCookies();
String ticket = "";
for (int i = 0; all_Cookies != null && i < all_Cookies.length; i++) {//获得EP发给客户端的Ticket
//Get MYSAPSSO2 cookie from request context...
if ("MYSAPSSO2".equals(all_Cookies[i].getName())) {
ticket = all_Cookies[i].getValue();
break;
}
}
//String pab = "C:\\pse\\verify.pse";//EP证书路径
String pab = SysGetProperty.pab;
//If no ticket present we output an error page
if ("".equals(ticket)) {
System.out.println(" ERROR: No mySAP.com logon ticket found.");
} else {
//System.out.println("This jsp page uses ticket library version : "+SSO2Ticket.getVersion());
if (SSO2Ticket.init(SSO2Ticket.SECLIBRARY)) {
o = SSO2Ticket.evalLogonTicket(ticket, pab, null);//加载证书
}else{
System.out.println ("Could not load sapsecu.dll ");
}
if (o != null) {
String userName = (String) o[0]; //First element is the SAP system user
// String Sysid = (String) o[1]; //Second element is the id of the issuing system
// String Client = (String) o[2]; //Third element is the client of the issuing system
// String PrtUsr = (String) o[4]; //Portal user
session.setAttribute("userName", userName);
System.out.println("---------------用户:"+userName+"进入系统---------------");
/**----------------------BO认证 开始----------------------*/
/** 此段代码已经GetBoToken.java中了*/
//String host = ApplicationProperties.getProperty("webi.host");
// String host = "10.5.24.95:6400" ;
// //String authhome = ApplicationProperties.getProperty("bobj.trustedauth.home");
// String authhome = "C:\\pse\\TrustedPrincipal.conf";
// System.setProperty("bobj.trustedauth.home", authhome);
//
// ITrustedPrincipal trustedprincipal;
// ISessionMgr sessionMgr = CrystalEnterprise.getSessionMgr();
// trustedprincipal = sessionMgr.createTrustedPrincipal("BD3~200/" +userName, host,"pcitc");
// IEnterpriseSession es = sessionMgr.logon(trustedprincipal);
// ILogonTokenMgr ltm = es.getLogonTokenMgr();
//
// session.setAttribute("CE_ENTERPRISESESSION", es);
//
// System.out.println(ltm.getDefaultToken());
/**----------------------BO认证 结束----------------------*/
}else{
//用户名为null,跳转出错页面
String rootpath = req.getContextPath();
String sendUrl = rootpath + "/jsp/sysErrorPage.html";
responseHttp.sendRedirect(sendUrl);
System.out.println ("--------------UserName is null -------------- ");
}
}
/**
* 从 EP 获取用户名 -----------------结束--------------------
*
* */
}
}catch(Exception e){
e.printStackTrace();
}finally{
chain.doFilter(request, response);
}
}
public void init(FilterConfig arg0) throws ServletException {
}
}
评论4
最新资源