/* ================================================================== * Created [2009-4-27 下午11:32:55] by Jon.King * ================================================================== * TSS * ================================================================== * mailTo:jinpujun@hotmail.com * Copyright (c) Jon.King, 2009-2012 * ================================================================== */ package com.jinhe.tss.core.sso.identifier; import org.apache.log4j.Logger; import com.jinhe.tss.core.exception.UserIdentificationException; import com.jinhe.tss.core.sso.IOperator; import com.jinhe.tss.core.sso.IUserIdentifier; import com.jinhe.tss.core.sso.IdentityCard; import com.jinhe.tss.core.sso.TokenUtil; import com.jinhe.tss.core.sso.context.Context; import com.jinhe.tss.core.sso.online.OnlineUserManagerFactory; /** * <p> * BaseUserIdentifier.java * </p> * <p> * 身份认证器超类 * </p> * */ public abstract class BaseUserIdentifier implements IUserIdentifier { protected Logger log = Logger.getLogger(this.getClass()); public IdentityCard identify() throws UserIdentificationException { // 验证通行证 IOperator operator = validate(); // 如果合法,注册在线用户,并获取相关用户信息对象,放入身份对象 if (operator != null) { String appCode = Context.getApplicationContext().getCurrentAppCode(); String sessionId = Context.getRequestContext().getSessionId(); Long userId = operator.getId(); String userName = operator.getUserName(); String token = TokenUtil.createToken(sessionId, userId); // 注册到在线用户库 OnlineUserManagerFactory.getManager().register(token, appCode, sessionId, userId, userName); return new IdentityCard(token, operator); } else { throw new UserIdentificationException("用户认证失败,没有对应合法身份"); } } /** * <p> * 验证用户是否合法,如果合法,返回相应的operator对象,否则返回Null。 * 验证过程中任务业务逻辑错误,需要通知用户的,都必须抛出UserIdentificationException异常 * </p> * * @return */ protected abstract IOperator validate() throws UserIdentificationException; }