package com.tcm.training.admin.app.auth.service; import com.tcm.training.admin.app.auth.config.AppAuthProperties; import com.tcm.training.admin.app.auth.support.StpAppUserUtil; import cn.dev33.satoken.stp.SaTokenInfo; import org.springframework.stereotype.Service; /** * APP 登录态门面,隔离 Sa-Token 静态调用,便于认证服务测试。 */ @Service public class AppAuthSessionService { private final AppAuthProperties appAuthProperties; public AppAuthSessionService(AppAuthProperties appAuthProperties) { this.appAuthProperties = appAuthProperties; } /** * 为指定 APP 用户建立登录态。 */ public void login(Long userId) { StpAppUserUtil.login(userId, appAuthProperties.getTokenTimeoutSeconds()); } /** * 判断当前请求是否存在 APP 登录态。 */ public boolean isLogin() { return StpAppUserUtil.isLogin(); } /** * 获取当前 APP 登录用户 ID。 */ public Long getLoginUserId() { return StpAppUserUtil.getLoginIdAsLong(); } /** * 获取当前 APP 登录用户 ID,不存在时抛出未登录异常。 */ public Long requireLoginUserId() { StpAppUserUtil.checkLogin(); return StpAppUserUtil.getLoginIdAsLong(); } /** * 获取当前 APP 登录态的 token 信息。 */ public SaTokenInfo getTokenInfo() { return StpAppUserUtil.getTokenInfo(); } /** * 获取当前请求携带的 APP token 值。 */ public String getTokenValue() { return StpAppUserUtil.getTokenValue(); } /** * 注销当前 APP 登录态。 */ public void logout() { StpAppUserUtil.logout(); } }