package com.vci.starter.web.interceptor; import com.vci.starter.web.exception.VciBaseException; import com.vci.starter.web.pagemodel.SessionInfo; 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 用户的会话许可 */ void logout(String userToken); /** * 根据token获取用户在系统中还可以存在的时间 * @param userToken userToken 用户的会话许可 * @return 用户在系统中还可以存在的时间(毫秒) */ long getCanAliveTime(String userToken); }