1、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<filter>
<filter-name>CAS LoginFilter</filter-name>
<filter-class>cn.bidlink.filters.CheckLoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CAS LoginFilter</filter-name>
<url-pattern>*.vm</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CAS LoginFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.vm</welcome-file>
</welcome-file-list>
</web-app>
2、
package cn.bidlink.filters;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.jasig.cas.client.authentication.AttributePrincipal;
import org.springframework.web.context.support.WebApplicationContextUtils;
import cn.bidlink.xcb.ac.dao.IUserDAO;
import cn.bidlink.xcb.ac.model.User;
import cn.bidlink.xcb.common.LogMgr;
import cn.bidlink.xcb.rsc.dao.IStockerDAO;
import cn.bidlink.xcb.rsc.model.StockerMemberInfo;
public class CheckLoginFilter implements Filter {
protected FilterConfig fConfig = null;
IUserDAO userDao;
IStockerDAO stockerDao;
String userInSession = "USER-IN-SESSION";
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain fChain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
AttributePrincipal principal = (AttributePrincipal) req.getUserPrincipal();
HttpSession session = req.getSession();
String codes = "";
if (principal != null) {
codes = principal.getName();
}
if (codes == null || codes.equals("")) {
fChain.doFilter(req, res);
return;
}else{
ServletContext context = getFilterConfig().getServletContext();
userDao = (IUserDAO) WebApplicationContextUtils.getWebApplicationContext(context).getBean("userDao");
User user = userDao.getUserByCode(codes);
if (user != null) {
//招标机构用户
session.setAttribute(userInSession, user);
} else {
stockerDao = (IStockerDAO) WebApplicationContextUtils.getWebApplicationContext(context).getBean("stockerDao");
StockerMemberInfo userinfo = stockerDao.getOutStocker(codes, "0");
user = new User();
user.setCode(codes);
HashMap gh = new HashMap();
List groups = stockerDao.getUserGroup(codes);
if (userinfo != null) {
// 供应商
LogMgr.bizlog.warn(">>>>>>>>>读取供应商登录信息 end groups.size() : "+ groups.size());
this.setMemberSession(user,codes,userinfo,session,groups);
}else{
// 采购商
userinfo = stockerDao.getOutStocker(codes, "1");
if(userinfo != null && !userinfo.equals("")){
user.setName(userinfo.getCompanyCnName());
user.setRole(User.ROLE_CGS);
user.setBidorg(userinfo.getBidorg());
LogMgr.bizlog.warn(">>>>>>>>>读取采购商登录信息 end groups.size() : "+ groups.size());
}
}
if(userinfo==null){
session.invalidate();
}else{
for (int i = 0, size = groups == null ? 0 : groups.size(); i < size; i++) {
gh.put((String) (groups.get(i)), "");
}
session.setAttribute(userInSession, user);
session.setAttribute("GroupList", gh);
session.setAttribute("bidorg", user.getBidorg());
}
}
}
fChain.doFilter(request, response);
}
/**
* 设置供应商Session
* @param user
* @param codes
* @param userinfo
* @param session
*/
public void setMemberSession(User user,String codes,StockerMemberInfo userinfo,HttpSession session,List groups){
user.setName(userinfo.getCompanyCnName());
user.setAccountNo(userinfo.getAccountno());
user.setRole(User.ROLE_GYS);
user.setCard(userinfo.getOrgCode());
user.setBidorg(userinfo.getBidorg());
user.setPassword(userinfo.getPassword());
String groupId = "0";
if (groups != null && groups.size() > 0) {
groupId = (String) groups.get(0);
}
session.setAttribute("GROUPID", groupId);
session.setAttribute("MEMBERINFO", userinfo);
}
public void init(FilterConfig fConfig) throws ServletException {
this.fConfig = fConfig;
}
public FilterConfig getFilterConfig() {
return fConfig;
}
}