/* * Copyright (c) 2008-2016 Computer Network Information Center (CNIC), Chinese Academy of Sciences. * * This file is part of Duckling project. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package cn.vlabs.umt.services.user.service; import java.util.Date; import java.util.List; import cn.vlabs.umt.services.user.bean.Token; /** * 管理token服务类 * @author lvly * @since 2013-1-31 */ /** * @author lvly * @since 2013-1-31 */ public interface ITokenService { static final String BEAN_ID="tokenService"; /** * 创建token,默认失效时间为24小时后,而且新建token以后,以前的token会失效 * @param uid 用户id * @param operation 详见Token.TYPE_XXX * @return token * */ Token createToken(int uid,int operation); /** * 创建token,默认失效时间为24小时后,而且新建token以后,以前的token会失效 * @param uid 用户id * @param operation 详见Token.TYPE_XXX * @param content 详见Token.var * @return token * */ Token createToken(int uid,int operation,String content); /** * 创建token,而且新建token以后,以前的token会失效 * @param uid 用户id * @param operation 详见Token.TYPE_XXX * @param content 详见Token.var * @return tokenId * */ Token createToken(int uid,int operation,String content,Date invalidTime); /** * 创建token,而且新建token以后,以前的token会失效 * @param uid 用户ID * @param operation 类型 详见 Token.TYPE_XX * @param content 约定变量,可以为空 * @param invalidTime 失效时间,可以为空 * @param status token 状态,详细见Token.STATUS_XX * @return */ Token createToken(int uid,int operation,String content,Date invalidTime,int status); int createToken(Token token); /** * 把token置为已使用 * @param tokenId tokenId * @return flag 设置成功了吗 * */ boolean toUsed(int tokenId); /** * 查一查当前token是否有效 * @param tokenId * @param random * @param operation * */ boolean isValid(int tokenId,String random,int operation); /** * 取一条用户最新的,某个type的,用过的token(用来取得已激活的密保邮箱等) * @param uid * @param operation * @param status * */ Token getATokenByUidAndOperation(int uid,int operation,int status); /** * 取多个Token, 应用场景:比如取得所有未激活的辅助邮箱 * @param uid * @param operation * @param status * @return */ List<Token> getTokenByUidAndOperation(int uid,int operation,int status); /** * 根据tokenId获取Token * @param tokenId * @return token * */ Token getTokenById(int tokenId); /** * 如果发出一个token的时候,想删除以前所有同类型的token,请调用次方法 * @param uid * @param operation */ void removeTokensUnsed(int uid,int operation); /** * 删除一个token,这跟used有本质区别 * @param tokenId * */ void removeTokenById(int tokenId); /** * 获取一个token 同getAtokenByUidAndOperation,但是会顾虑过期时间,如果过期,则返回null * @param userId * @param operation * @param status * @return */ Token getATokenByUidAndOperationWithExpire(int userId, int operation, int statusUsed); }