文档库 最新最全的文档下载
当前位置:文档库 › 单点登录

单点登录

https://www.wendangku.net/doc/5e13270095.html,/tiantiantianshilan/article/details/6680883

[java] view plaincopy

package com.itiptop.portal.filter;

import java.io.IOException;
import https://www.wendangku.net/doc/5e13270095.html,.URLDecoder;
import java.util.List;
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 https://www.wendangku.net/doc/5e13270095.html,mon.utils.StringUtils;
import com.itiptop.kernel.core.GBeanManager;
import com.itiptop.kernel.core.ServiceRegistry;
import com.itiptop.kernel.gbean.GBean;
import com.itiptop.kernel.security.SecurityUtils;
import https://www.wendangku.net/doc/5e13270095.html,er;
import com.wiscom.is.IdentityFactory;
import com.wiscom.is.IdentityManager;

public class CurrentSessionFilter implements Filter {

@Override
public void destroy() {
}

@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession();

SecurityUtils.sessionLocal.set(session);

User user= SecurityUtils.getCurrentUser();
if(user.isLogged()){
chain.doFilter(request, response);
}else
{//not logged user.
String username=request.getParameter("username");
String pwd=request.getParameter("password");

if(StringUtils.isNotBlank(username)&&StringUtils.isNotBlank(pwd)){
user=SecurityUtils.login(username, pwd);
chain.doFilter(request, response);
}else{
try {//not have username&pwd params.
user=loginUser(getCurUserID(request));
chain.doFilter(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
}

}

@Override
public void init(FilterConfig config) throws ServletException {
}


private User loginUser(String userID) {
GBeanManager om = ServiceRegistry.getGlobalGBeanManager();
List ret = om.findGBean("user", "ID", "string",

userID);
if (ret.size() > 0) {
GBean user=ret.get(0);
User u=SecurityUtils.login(user.getString("loginname"), user.getString("password"));
return u;
} else {
return null;
}
}




private String getCurUserID(HttpServletRequest request) throws Exception {
// String is_config = request.getRealPath("/client.properties");
String is_config = request.getSession().getServletContext()
.getRealPath("/client.properties");
Cookie all_cookies[] = request.getCookies();
Cookie myCookie;
String decodedCookieValue = null;
if (all_cookies != null) {
for (int i = 0; i < all_cookies.length; i++) {
myCookie = all_cookies[i];
if (myCookie.getName().equals("iPlanetDirectoryPro")) {
decodedCookieValue = URLDecoder.decode(myCookie.getValue(),
"GB2312");
}
}
}

IdentityFactory factory = IdentityFactory.createFactory(is_config);
IdentityManager im = factory.getIdentityManager();

String curUserID = "";
if (decodedCookieValue != null) {
curUserID = im.getCurrentUser(decodedCookieValue);
}
return curUserID;
}


}

web.xml配置filter chain。

[html] view plaincopy


currentSessionFilter
com.itiptop.portal.filter.CurrentSessionFilter



[html] view plaincopy


currentSessionFilter
/*

相关文档
相关文档 最新文档