longz
2026-07-13 5882ba8863d77fdcc168b176c3ffb30e8a20556a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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}(管理端)隔离。
 *
 * <p>独立 {@link SaRealmConstants#MINI_TOKEN_HEADER},避免与管理端共用 {@code Authorization} 时串 token。
 */
@Configuration
public class SaTokenMiniStpConfig {
 
    /**
     * 初始化小程序域 StpLogic,并注册到 {@link MiniStpUtil} 与 Sa-Token 全局 StpLogicMap。
     *
     * <p>返回值仅用于 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();
    }
}