package com.vci.starter.web.interceptor; import com.vci.corba.common.PLException; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.SessionInfo; import com.vci.starter.web.pagemodel.TokenVO; import javax.servlet.http.HttpServletRequest; /** * 会话信息相关的接口 * @author weidy * @date 2020/2/27 */ public interface VciSessionForLoginI { /** * 检查用户是否登录 * @param userId 用户名 * @return 为空表示没有登录 */ String checkIsLogined(String userId); /** * 强制用户下线 * @param userId 用户名 */ void popUser(String userId); /** * 将会话信息存储到Redis * @param sessionInfo 会话信息 */ void saveSessionInfo(SessionInfo sessionInfo); /** * 校验请求是否符合权限验证 * 包含1,系统是否可以访问当前服务或者接口 * 2, 用户是否有权限访问当前服务 * 3, 用户是否有权限访问当前数据 * @param request 请求对象 * @param systemPrivateToken 系统的许可码 * @param sessionInfo 当前用户会话对象 * @param handler 执行对象 * @return true表示有权限,false表示没权限 * @throws VciBaseException 没有权限的时候会抛出异常 */ boolean checkRequestRights(HttpServletRequest request, String systemPrivateToken, SessionInfo sessionInfo, Object handler) throws VciBaseException; /** * 更新请求时间 * @param userToken 用户token */ void updateRequestTime(String userToken); /** * 根据token获取用户的对象 * @param userToken 用户token * @return 用户会话对象 */ SessionInfo getSessionInfoByToken(String userToken); /** * 退出登录 * @param userToken 用户的会话许可 * @param userId 用户id */ void logout(String userToken,String userId) throws PLException; /** * 根据token获取用户在系统中还可以存在的时间 * @param userToken userToken 用户的会话许可 * @return 用户在系统中还可以存在的时间(毫秒) */ long getCanAliveTime(String userToken); /** * 创建许可的信息,并存储到缓存中 * @param sessionInfo session的信息 * @return 许可信息 */ TokenVO createToken(SessionInfo sessionInfo) ; /** * 创建许可的信息,并存储到缓存中 * @param key token在redis中的key。 * @param sessionInfo session的信息 * @return 许可信息 */ TokenVO createToken(String key, SessionInfo sessionInfo) ; /** * 刷新缓存中的token * @param sessionInfo session的信息 */ void refreshToken(SessionInfo sessionInfo); /** * 刷新缓存中的token * @param key token在redis中的key * @param sessionInfo session的信息 */ void refreshToken(String key, SessionInfo sessionInfo); /** * 将token放入平台中 * @param sessionInfo */ void initInvocationInfo(SessionInfo sessionInfo); }