package com.sinata.appointment.config; import cn.dev33.satoken.config.SaTokenConfig; import cn.dev33.satoken.stp.StpLogic; import cn.dev33.satoken.SaManager; import com.sinata.appointment.constants.SaRealmConstants; import org.springframework.beans.BeanUtils; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * 小程序域 StpLogic,与默认 {@link cn.dev33.satoken.stp.StpUtil}(管理端)隔离。 * *
独立 {@link SaRealmConstants#MINI_TOKEN_HEADER},避免与管理端共用 {@code Authorization} 时串 token。 */ @Configuration public class SaTokenMiniStpConfig { /** * 初始化小程序域 StpLogic,并注册到 {@link MiniStpUtil} 与 Sa-Token 全局 StpLogicMap。 * *
返回值仅用于 Spring 启动顺序控制(供 {@code @DependsOn} 使用)。 */ @Bean("miniStpUtilInit") public Object miniStpUtilInit() { StpLogic logic = new StpLogic(SaRealmConstants.MINI_PROGRAM); SaTokenConfig global = SaManager.getConfig(); if (global != null) { SaTokenConfig mini = new SaTokenConfig(); BeanUtils.copyProperties(global, mini); mini.setTokenName(SaRealmConstants.MINI_TOKEN_HEADER); mini.setIsReadHeader(true); mini.setIsReadCookie(global.getIsReadCookie()); mini.setIsReadBody(global.getIsReadBody()); mini.setTokenPrefix(global.getTokenPrefix()); logic.setConfig(mini); } MiniStpUtil.setStpLogic(logic); return new Object(); } }