filter 过滤单点登录用户

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;
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值