package com.tcm.training.admin.app.auth.support; import cn.dev33.satoken.stp.SaLoginModel; import cn.dev33.satoken.stp.SaTokenInfo; import cn.dev33.satoken.stp.StpLogic; /** * APP 用户独立登录态工具,避免与后台管理员 token 混用。 */ public final class StpAppUserUtil { private static final StpLogic STP_LOGIC = new StpLogic("app-user"); private static final long NEVER_EXPIRE_TIMEOUT = -1L; private StpAppUserUtil() { } /** * 为 APP 用户建立永久登录态。 */ public static void login(Object loginId) { STP_LOGIC.login(loginId, new SaLoginModel().setTimeout(NEVER_EXPIRE_TIMEOUT)); } /** * 校验当前请求是否已登录 APP 用户。 */ public static void checkLogin() { STP_LOGIC.checkLogin(); } /** * 判断当前请求是否存在 APP 登录态。 */ public static boolean isLogin() { return STP_LOGIC.isLogin(); } /** * 获取当前 APP 用户登录 ID。 */ public static Long getLoginIdAsLong() { return STP_LOGIC.getLoginIdAsLong(); } /** * 获取当前 APP 登录态的 token 信息。 */ public static SaTokenInfo getTokenInfo() { return STP_LOGIC.getTokenInfo(); } /** * 获取底层 APP 登录态逻辑对象,供需要调用 Sa-Token 高级能力的服务复用。 */ public static StpLogic getStpLogic() { return STP_LOGIC; } /** * 获取当前请求携带的 token 值。 */ public static String getTokenValue() { return STP_LOGIC.getTokenValue(); } /** * 注销当前 APP 登录态。 */ public static void logout() { STP_LOGIC.logout(); } }