SaTokenManager.java 4.2 KB
Newer Older
shengzhang_'s avatar
shengzhang_ 已提交
1 2
package cn.dev33.satoken;

3 4 5
import java.util.HashMap;
import java.util.Map;

shengzhang_'s avatar
shengzhang_ 已提交
6 7 8 9
import cn.dev33.satoken.action.SaTokenAction;
import cn.dev33.satoken.action.SaTokenActionDefaultImpl;
import cn.dev33.satoken.config.SaTokenConfig;
import cn.dev33.satoken.config.SaTokenConfigFactory;
10 11
import cn.dev33.satoken.context.SaTokenContext;
import cn.dev33.satoken.context.SaTokenContextDefaultImpl;
shengzhang_'s avatar
shengzhang_ 已提交
12 13
import cn.dev33.satoken.dao.SaTokenDao;
import cn.dev33.satoken.dao.SaTokenDaoDefaultImpl;
shengzhang_'s avatar
shengzhang_ 已提交
14 15
import cn.dev33.satoken.listener.SaTokenListener;
import cn.dev33.satoken.listener.SaTokenListenerDefaultImpl;
shengzhang_'s avatar
shengzhang_ 已提交
16 17
import cn.dev33.satoken.stp.StpInterface;
import cn.dev33.satoken.stp.StpInterfaceDefaultImpl;
18
import cn.dev33.satoken.stp.StpLogic;
shengzhang_'s avatar
shengzhang_ 已提交
19 20 21
import cn.dev33.satoken.util.SaTokenInsideUtil;

/**
shengzhang_'s avatar
shengzhang_ 已提交
22
 * 管理sa-token所有接口对象 
shengzhang_'s avatar
shengzhang_ 已提交
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
 * @author kong
 *
 */
public class SaTokenManager {

	/**
	 * 配置文件 Bean 
	 */
	private static SaTokenConfig config;	
	public static void setConfig(SaTokenConfig config) {
		SaTokenManager.config = config;
		if(config.getIsV()) {
			SaTokenInsideUtil.printSaToken();
		}
	}
38
	public static SaTokenConfig getConfig() {
shengzhang_'s avatar
shengzhang_ 已提交
39
		if (config == null) {
40 41 42 43 44
			synchronized (SaTokenManager.class) {
				if (config == null) {
					setConfig(SaTokenConfigFactory.createConfig());
				}
			}
shengzhang_'s avatar
shengzhang_ 已提交
45
		}
46
		return config;
shengzhang_'s avatar
shengzhang_ 已提交
47 48 49 50 51
	}
	
	/**
	 * 持久化 Bean 
	 */
52
	private static SaTokenDao saTokenDao;
shengzhang_'s avatar
shengzhang_ 已提交
53
	public static void setSaTokenDao(SaTokenDao saTokenDao) {
54
		if(SaTokenManager.saTokenDao != null && (SaTokenManager.saTokenDao instanceof SaTokenDaoDefaultImpl)) {
shengzhang_'s avatar
shengzhang_ 已提交
55
			((SaTokenDaoDefaultImpl)SaTokenManager.saTokenDao).endRefreshThread();
56
		}
shengzhang_'s avatar
shengzhang_ 已提交
57 58
		SaTokenManager.saTokenDao = saTokenDao;
	}
59
	public static SaTokenDao getSaTokenDao() {
shengzhang_'s avatar
shengzhang_ 已提交
60
		if (saTokenDao == null) {
61 62 63 64 65
			synchronized (SaTokenManager.class) {
				if (saTokenDao == null) {
					setSaTokenDao(new SaTokenDaoDefaultImpl());
				}
			}
shengzhang_'s avatar
shengzhang_ 已提交
66
		}
67
		return saTokenDao;
shengzhang_'s avatar
shengzhang_ 已提交
68 69 70 71 72
	}
	
	/**
	 * 权限认证 Bean 
	 */
73
	private static StpInterface stpInterface;
shengzhang_'s avatar
shengzhang_ 已提交
74 75 76
	public static void setStpInterface(StpInterface stpInterface) {
		SaTokenManager.stpInterface = stpInterface;
	}
77
	public static StpInterface getStpInterface() {
shengzhang_'s avatar
shengzhang_ 已提交
78
		if (stpInterface == null) {
79 80 81 82 83
			synchronized (SaTokenManager.class) {
				if (stpInterface == null) {
					setStpInterface(new StpInterfaceDefaultImpl());
				}
			}
shengzhang_'s avatar
shengzhang_ 已提交
84
		}
85
		return stpInterface;
shengzhang_'s avatar
shengzhang_ 已提交
86 87 88 89 90
	}
	
	/**
	 * 框架行为 Bean 
	 */
91
	private static SaTokenAction saTokenAction;
shengzhang_'s avatar
shengzhang_ 已提交
92 93 94
	public static void setSaTokenAction(SaTokenAction saTokenAction) {
		SaTokenManager.saTokenAction = saTokenAction;
	}
95
	public static SaTokenAction getSaTokenAction() {
shengzhang_'s avatar
shengzhang_ 已提交
96
		if (saTokenAction == null) {
97 98 99 100 101
			synchronized (SaTokenManager.class) {
				if (saTokenAction == null) {
					setSaTokenAction(new SaTokenActionDefaultImpl());
				}
			}
shengzhang_'s avatar
shengzhang_ 已提交
102
		}
103
		return saTokenAction;
shengzhang_'s avatar
shengzhang_ 已提交
104
	}
105
	
shengzhang_'s avatar
shengzhang_ 已提交
106
	/**
107
	 * 容器操作 Bean  
shengzhang_'s avatar
shengzhang_ 已提交
108
	 */
109 110 111
	private static SaTokenContext saTokenContext;
	public static void setSaTokenContext(SaTokenContext saTokenContext) {
		SaTokenManager.saTokenContext = saTokenContext;
shengzhang_'s avatar
shengzhang_ 已提交
112
	}
113 114
	public static SaTokenContext getSaTokenContext() {
		if (saTokenContext == null) {
115
			synchronized (SaTokenManager.class) {
116 117
				if (saTokenContext == null) {
					setSaTokenContext(new SaTokenContextDefaultImpl());
118 119
				}
			}
shengzhang_'s avatar
shengzhang_ 已提交
120
		}
121
		return saTokenContext;
shengzhang_'s avatar
shengzhang_ 已提交
122
	}
123

shengzhang_'s avatar
shengzhang_ 已提交
124
	/**
shengzhang_'s avatar
shengzhang_ 已提交
125
	 * 侦听器 Bean  
shengzhang_'s avatar
shengzhang_ 已提交
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
	 */
	private static SaTokenListener saTokenListener;
	public static void setSaTokenListener(SaTokenListener saTokenListener) {
		SaTokenManager.saTokenListener = saTokenListener;
	}
	public static SaTokenListener getSaTokenListener() {
		if (saTokenListener == null) {
			synchronized (SaTokenManager.class) {
				if (saTokenListener == null) {
					setSaTokenListener(new SaTokenListenerDefaultImpl());
				}
			}
		}
		return saTokenListener;
	}

142 143 144 145
	/**
	 * StpLogic集合, 记录框架所有成功初始化的StpLogic 
	 */
	public static Map<String, StpLogic> stpLogicMap = new HashMap<String, StpLogic>();
146
	
147 148
	/**
	 * 向集合中 put 一个 StpLogic 
shengzhang_'s avatar
shengzhang_ 已提交
149
	 * @param stpLogic StpLogic
150 151 152
	 */
	public static void putStpLogic(StpLogic stpLogic) {
		stpLogicMap.put(stpLogic.getLoginKey(), stpLogic);
shengzhang_'s avatar
shengzhang_ 已提交
153
	}
154

155 156 157 158 159 160
	/**
	 * 根据 LoginKey 获取对应的StpLogic,如果不存在则返回null 
	 * @param loginKey 对应的LoginKey 
	 * @return 对应的StpLogic
	 */
	public static StpLogic getStpLogic(String loginKey) {
161
		return stpLogicMap.get(loginKey);
shengzhang_'s avatar
shengzhang_ 已提交
162 163 164 165
	}
	
	
}