CrmAdminStpUtil.java 43 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462
  1. package com.jtzx.crm.module.api.util;
  2. import cn.dev33.satoken.SaManager;
  3. import cn.dev33.satoken.fun.SaFunction;
  4. import cn.dev33.satoken.fun.SaTwoParamFunction;
  5. import cn.dev33.satoken.listener.SaTokenEventCenter;
  6. import cn.dev33.satoken.session.SaSession;
  7. import cn.dev33.satoken.session.SaTerminalInfo;
  8. import cn.dev33.satoken.stp.SaTokenInfo;
  9. import cn.dev33.satoken.stp.StpLogic;
  10. import cn.dev33.satoken.stp.parameter.SaLoginParameter;
  11. import cn.dev33.satoken.stp.parameter.SaLogoutParameter;
  12. import lombok.Getter;
  13. import java.util.List;
  14. /**
  15. * 后台管理专用 StpUtil
  16. * 文档见 SA-Token -> 多账户认证:https://sa-token.cc/doc.html#/up/many-account
  17. *
  18. * @author Uncarbon
  19. * @see cn.dev33.satoken.stp.StpUtil
  20. */
  21. public final class CrmAdminStpUtil {
  22. private CrmAdminStpUtil() {
  23. }
  24. /**
  25. * 多账号体系下的类型标识
  26. */
  27. public static final String TYPE = "CrmAdminStpUtil";
  28. /**
  29. * 底层使用的 StpLogic 对象
  30. * -- GETTER --
  31. * 获取 StpLogic 对象
  32. *
  33. * @return /
  34. */
  35. @Getter
  36. public static StpLogic stpLogic = new StpLogic(TYPE);
  37. /**
  38. * 获取当前 StpLogic 的账号类型
  39. *
  40. * @return /
  41. */
  42. public static String getLoginType(){
  43. return stpLogic.getLoginType();
  44. }
  45. /**
  46. * 安全的重置 StpLogic 对象
  47. *
  48. * <br> 1、更改此账户的 StpLogic 对象
  49. * <br> 2、put 到全局 StpLogic 集合中
  50. * <br> 3、发送日志
  51. *
  52. * @param newStpLogic /
  53. */
  54. public static void setStpLogic(StpLogic newStpLogic) {
  55. // 1、重置此账户的 StpLogic 对象
  56. stpLogic = newStpLogic;
  57. // 2、添加到全局 StpLogic 集合中
  58. // 以便可以通过 SaManager.getStpLogic(type) 的方式来全局获取到这个 StpLogic
  59. SaManager.putStpLogic(newStpLogic);
  60. // 3、$$ 发布事件:更新了 stpLogic 对象
  61. SaTokenEventCenter.doSetStpLogic(stpLogic);
  62. }
  63. // ------------------- 获取 token 相关 -------------------
  64. /**
  65. * 返回 token 名称,此名称在以下地方体现:Cookie 保存 token 时的名称、提交 token 时参数的名称、存储 token 时的 key 前缀
  66. *
  67. * @return /
  68. */
  69. public static String getTokenName() {
  70. return stpLogic.getTokenName();
  71. }
  72. /**
  73. * 在当前会话写入指定 token 值
  74. *
  75. * @param tokenValue token 值
  76. */
  77. public static void setTokenValue(String tokenValue){
  78. stpLogic.setTokenValue(tokenValue);
  79. }
  80. /**
  81. * 在当前会话写入指定 token 值
  82. *
  83. * @param tokenValue token 值
  84. * @param cookieTimeout Cookie存活时间(秒)
  85. */
  86. public static void setTokenValue(String tokenValue, int cookieTimeout){
  87. stpLogic.setTokenValue(tokenValue, cookieTimeout);
  88. }
  89. /**
  90. * 在当前会话写入指定 token 值
  91. *
  92. * @param tokenValue token 值
  93. * @param loginParameter 登录参数
  94. */
  95. public static void setTokenValue(String tokenValue, SaLoginParameter loginParameter){
  96. stpLogic.setTokenValue(tokenValue, loginParameter);
  97. }
  98. /**
  99. * 将 token 写入到当前请求的 Storage 存储器里
  100. *
  101. * @param tokenValue 要保存的 token 值
  102. */
  103. public static void setTokenValueToStorage(String tokenValue){
  104. stpLogic.setTokenValueToStorage(tokenValue);
  105. }
  106. /**
  107. * 获取当前请求的 token 值
  108. *
  109. * @return 当前tokenValue
  110. */
  111. public static String getTokenValue() {
  112. return stpLogic.getTokenValue();
  113. }
  114. /**
  115. * 获取当前请求的 token 值 (不裁剪前缀)
  116. *
  117. * @return /
  118. */
  119. public static String getTokenValueNotCut(){
  120. return stpLogic.getTokenValueNotCut();
  121. }
  122. /**
  123. * 获取当前会话的 token 参数信息
  124. *
  125. * @return token 参数信息
  126. */
  127. public static SaTokenInfo getTokenInfo() {
  128. return stpLogic.getTokenInfo();
  129. }
  130. // ------------------- 登录相关操作 -------------------
  131. // --- 登录
  132. /**
  133. * 会话登录
  134. *
  135. * @param id 账号id,建议的类型:(long | int | String)
  136. */
  137. public static void login(Object id) {
  138. stpLogic.login(id);
  139. }
  140. /**
  141. * 会话登录,并指定登录设备类型
  142. *
  143. * @param id 账号id,建议的类型:(long | int | String)
  144. * @param deviceType 设备类型
  145. */
  146. public static void login(Object id, String deviceType) {
  147. stpLogic.login(id, deviceType);
  148. }
  149. /**
  150. * 会话登录,并指定是否 [记住我]
  151. *
  152. * @param id 账号id,建议的类型:(long | int | String)
  153. * @param isLastingCookie 是否为持久Cookie,值为 true 时记住我,值为 false 时关闭浏览器需要重新登录
  154. */
  155. public static void login(Object id, boolean isLastingCookie) {
  156. stpLogic.login(id, isLastingCookie);
  157. }
  158. /**
  159. * 会话登录,并指定此次登录 token 的有效期, 单位:秒
  160. *
  161. * @param id 账号id,建议的类型:(long | int | String)
  162. * @param timeout 此次登录 token 的有效期, 单位:秒
  163. */
  164. public static void login(Object id, long timeout) {
  165. stpLogic.login(id, timeout);
  166. }
  167. /**
  168. * 会话登录,并指定所有登录参数 Model
  169. *
  170. * @param id 账号id,建议的类型:(long | int | String)
  171. * @param loginParameter 此次登录的参数Model
  172. */
  173. public static void login(Object id, SaLoginParameter loginParameter) {
  174. stpLogic.login(id, loginParameter);
  175. }
  176. /**
  177. * 创建指定账号 id 的登录会话数据
  178. *
  179. * @param id 账号id,建议的类型:(long | int | String)
  180. * @return 返回会话令牌
  181. */
  182. public static String createLoginSession(Object id) {
  183. return stpLogic.createLoginSession(id);
  184. }
  185. /**
  186. * 创建指定账号 id 的登录会话数据
  187. *
  188. * @param id 账号id,建议的类型:(long | int | String)
  189. * @param loginParameter 此次登录的参数Model
  190. * @return 返回会话令牌
  191. */
  192. public static String createLoginSession(Object id, SaLoginParameter loginParameter) {
  193. return stpLogic.createLoginSession(id, loginParameter);
  194. }
  195. /**
  196. * 获取指定账号 id 的登录会话数据,如果获取不到则创建并返回
  197. *
  198. * @param id 账号id,建议的类型:(long | int | String)
  199. * @return 返回会话令牌
  200. */
  201. public static String getOrCreateLoginSession(Object id) {
  202. return stpLogic.getOrCreateLoginSession(id);
  203. }
  204. // --- 注销 (根据 token)
  205. /**
  206. * 在当前客户端会话注销
  207. */
  208. public static void logout() {
  209. stpLogic.logout();
  210. }
  211. /**
  212. * 在当前客户端会话注销,根据注销参数
  213. */
  214. public static void logout(SaLogoutParameter logoutParameter) {
  215. stpLogic.logout(logoutParameter);
  216. }
  217. /**
  218. * 注销下线,根据指定 token
  219. *
  220. * @param tokenValue 指定 token
  221. */
  222. public static void logoutByTokenValue(String tokenValue) {
  223. stpLogic.logoutByTokenValue(tokenValue);
  224. }
  225. /**
  226. * 注销下线,根据指定 token、注销参数
  227. *
  228. * @param tokenValue 指定 token
  229. * @param logoutParameter /
  230. */
  231. public static void logoutByTokenValue(String tokenValue, SaLogoutParameter logoutParameter) {
  232. stpLogic.logoutByTokenValue(tokenValue, logoutParameter);
  233. }
  234. /**
  235. * 踢人下线,根据指定 token
  236. * <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
  237. *
  238. * @param tokenValue 指定 token
  239. */
  240. public static void kickoutByTokenValue(String tokenValue) {
  241. stpLogic.kickoutByTokenValue(tokenValue);
  242. }
  243. /**
  244. * 踢人下线,根据指定 token、注销参数
  245. * <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
  246. *
  247. * @param tokenValue 指定 token
  248. * @param logoutParameter 注销参数
  249. */
  250. public static void kickoutByTokenValue(String tokenValue, SaLogoutParameter logoutParameter) {
  251. stpLogic.kickoutByTokenValue(tokenValue, logoutParameter);
  252. }
  253. /**
  254. * 顶人下线,根据指定 token
  255. * <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
  256. *
  257. * @param tokenValue 指定 token
  258. */
  259. public static void replacedByTokenValue(String tokenValue) {
  260. stpLogic.replacedByTokenValue(tokenValue);
  261. }
  262. /**
  263. * 顶人下线,根据指定 token、注销参数
  264. * <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
  265. *
  266. * @param tokenValue 指定 token
  267. * @param logoutParameter /
  268. */
  269. public static void replacedByTokenValue(String tokenValue, SaLogoutParameter logoutParameter) {
  270. stpLogic.replacedByTokenValue(tokenValue, logoutParameter);
  271. }
  272. // --- 注销 (根据 loginId)
  273. /**
  274. * 会话注销,根据账号id
  275. *
  276. * @param loginId 账号id
  277. */
  278. public static void logout(Object loginId) {
  279. stpLogic.logout(loginId);
  280. }
  281. /**
  282. * 会话注销,根据账号id 和 设备类型
  283. *
  284. * @param loginId 账号id
  285. * @param deviceType 设备类型 (填 null 代表注销该账号的所有设备类型)
  286. */
  287. public static void logout(Object loginId, String deviceType) {
  288. stpLogic.logout(loginId, deviceType);
  289. }
  290. /**
  291. * 会话注销,根据账号id 和 注销参数
  292. *
  293. * @param loginId 账号id
  294. * @param logoutParameter 注销参数
  295. */
  296. public static void logout(Object loginId, SaLogoutParameter logoutParameter) {
  297. stpLogic.logout(loginId, logoutParameter);
  298. }
  299. /**
  300. * 踢人下线,根据账号id
  301. * <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
  302. *
  303. * @param loginId 账号id
  304. */
  305. public static void kickout(Object loginId) {
  306. stpLogic.kickout(loginId);
  307. }
  308. /**
  309. * 踢人下线,根据账号id 和 设备类型
  310. * <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
  311. *
  312. * @param loginId 账号id
  313. * @param deviceType 设备类型 (填 null 代表踢出该账号的所有设备类型)
  314. */
  315. public static void kickout(Object loginId, String deviceType) {
  316. stpLogic.kickout(loginId, deviceType);
  317. }
  318. /**
  319. * 踢人下线,根据账号id 和 注销参数
  320. * <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-5 </p>
  321. *
  322. * @param loginId 账号id
  323. * @param logoutParameter 注销参数
  324. */
  325. public static void kickout(Object loginId, SaLogoutParameter logoutParameter) {
  326. stpLogic.kickout(loginId, logoutParameter);
  327. }
  328. /**
  329. * 顶人下线,根据账号id
  330. * <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
  331. *
  332. * @param loginId 账号id
  333. */
  334. public static void replaced(Object loginId) {
  335. stpLogic.replaced(loginId);
  336. }
  337. /**
  338. * 顶人下线,根据账号id 和 设备类型
  339. * <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
  340. *
  341. * @param loginId 账号id
  342. * @param deviceType 设备类型 (填 null 代表顶替该账号的所有设备类型)
  343. */
  344. public static void replaced(Object loginId, String deviceType) {
  345. stpLogic.replaced(loginId, deviceType);
  346. }
  347. /**
  348. * 顶人下线,根据账号id 和 注销参数
  349. * <p> 当对方再次访问系统时,会抛出 NotLoginException 异常,场景值=-4 </p>
  350. *
  351. * @param loginId 账号id
  352. * @param logoutParameter 注销参数
  353. */
  354. public static void replaced(Object loginId, SaLogoutParameter logoutParameter) {
  355. stpLogic.replaced(loginId, logoutParameter);
  356. }
  357. // --- 注销 (会话管理辅助方法)
  358. /**
  359. * 在 Account-Session 上移除 Terminal 信息 (注销下线方式)
  360. * @param session /
  361. * @param terminal /
  362. */
  363. public static void removeTerminalByLogout(SaSession session, SaTerminalInfo terminal) {
  364. stpLogic.removeTerminalByLogout(session, terminal);
  365. }
  366. /**
  367. * 在 Account-Session 上移除 Terminal 信息 (踢人下线方式)
  368. * @param session /
  369. * @param terminal /
  370. */
  371. public static void removeTerminalByKickout(SaSession session, SaTerminalInfo terminal) {
  372. stpLogic.removeTerminalByKickout(session, terminal);
  373. }
  374. /**
  375. * 在 Account-Session 上移除 Terminal 信息 (顶人下线方式)
  376. * @param session /
  377. * @param terminal /
  378. */
  379. public static void removeTerminalByReplaced(SaSession session, SaTerminalInfo terminal) {
  380. stpLogic.removeTerminalByReplaced(session, terminal);
  381. }
  382. // 会话查询
  383. /**
  384. * 判断当前会话是否已经登录
  385. *
  386. * @return 已登录返回 true,未登录返回 false
  387. */
  388. public static boolean isLogin() {
  389. return stpLogic.isLogin();
  390. }
  391. /**
  392. * 判断指定账号是否已经登录
  393. *
  394. * @return 已登录返回 true,未登录返回 false
  395. */
  396. public static boolean isLogin(Object loginId) {
  397. return stpLogic.isLogin(loginId);
  398. }
  399. /**
  400. * 检验当前会话是否已经登录,如未登录,则抛出异常
  401. */
  402. public static void checkLogin() {
  403. stpLogic.checkLogin();
  404. }
  405. /**
  406. * 获取当前会话账号id,如果未登录,则抛出异常
  407. *
  408. * @return 账号id
  409. */
  410. public static Object getLoginId() {
  411. return stpLogic.getLoginId();
  412. }
  413. /**
  414. * 获取当前会话账号id, 如果未登录,则返回默认值
  415. *
  416. * @param <T> 返回类型
  417. * @param defaultValue 默认值
  418. * @return 登录id
  419. */
  420. public static <T> T getLoginId(T defaultValue) {
  421. return stpLogic.getLoginId(defaultValue);
  422. }
  423. /**
  424. * 获取当前会话账号id, 如果未登录,则返回null
  425. *
  426. * @return 账号id
  427. */
  428. public static Object getLoginIdDefaultNull() {
  429. return stpLogic.getLoginIdDefaultNull();
  430. }
  431. /**
  432. * 获取当前会话账号id, 并转换为 String 类型
  433. *
  434. * @return 账号id
  435. */
  436. public static String getLoginIdAsString() {
  437. return stpLogic.getLoginIdAsString();
  438. }
  439. /**
  440. * 获取当前会话账号id, 并转换为 int 类型
  441. *
  442. * @return 账号id
  443. */
  444. public static int getLoginIdAsInt() {
  445. return stpLogic.getLoginIdAsInt();
  446. }
  447. /**
  448. * 获取当前会话账号id, 并转换为 long 类型
  449. *
  450. * @return 账号id
  451. */
  452. public static long getLoginIdAsLong() {
  453. return stpLogic.getLoginIdAsLong();
  454. }
  455. /**
  456. * 获取指定 token 对应的账号id,如果 token 无效或 token 处于被踢、被顶、被冻结等状态,则返回 null
  457. *
  458. * @param tokenValue token
  459. * @return 账号id
  460. */
  461. public static Object getLoginIdByToken(String tokenValue) {
  462. return stpLogic.getLoginIdByToken(tokenValue);
  463. }
  464. /**
  465. * 获取指定 token 对应的账号id,如果 token 无效或 token 处于被踢、被顶等状态 (不考虑被冻结),则返回 null
  466. *
  467. * @param tokenValue token
  468. * @return 账号id
  469. */
  470. public Object getLoginIdByTokenNotThinkFreeze(String tokenValue) {
  471. return stpLogic.getLoginIdByTokenNotThinkFreeze(tokenValue);
  472. }
  473. /**
  474. * 获取当前 Token 的扩展信息(此函数只在jwt模式下生效)
  475. *
  476. * @param key 键值
  477. * @return 对应的扩展数据
  478. */
  479. public static Object getExtra(String key) {
  480. return stpLogic.getExtra(key);
  481. }
  482. /**
  483. * 获取指定 Token 的扩展信息(此函数只在jwt模式下生效)
  484. *
  485. * @param tokenValue 指定的 Token 值
  486. * @param key 键值
  487. * @return 对应的扩展数据
  488. */
  489. public static Object getExtra(String tokenValue, String key) {
  490. return stpLogic.getExtra(tokenValue, key);
  491. }
  492. // ------------------- Account-Session 相关 -------------------
  493. /**
  494. * 获取指定账号 id 的 Account-Session, 如果该 SaSession 尚未创建,isCreate=是否新建并返回
  495. *
  496. * @param loginId 账号id
  497. * @param isCreate 是否新建
  498. * @return SaSession 对象
  499. */
  500. public static SaSession getSessionByLoginId(Object loginId, boolean isCreate) {
  501. return stpLogic.getSessionByLoginId(loginId, isCreate);
  502. }
  503. /**
  504. * 获取指定 key 的 SaSession, 如果该 SaSession 尚未创建,则返回 null
  505. *
  506. * @param sessionId SessionId
  507. * @return Session对象
  508. */
  509. public static SaSession getSessionBySessionId(String sessionId) {
  510. return stpLogic.getSessionBySessionId(sessionId);
  511. }
  512. /**
  513. * 获取指定账号 id 的 Account-Session,如果该 SaSession 尚未创建,则新建并返回
  514. *
  515. * @param loginId 账号id
  516. * @return SaSession 对象
  517. */
  518. public static SaSession getSessionByLoginId(Object loginId) {
  519. return stpLogic.getSessionByLoginId(loginId);
  520. }
  521. /**
  522. * 获取当前已登录账号的 Account-Session, 如果该 SaSession 尚未创建,isCreate=是否新建并返回
  523. *
  524. * @param isCreate 是否新建
  525. * @return Session对象
  526. */
  527. public static SaSession getSession(boolean isCreate) {
  528. return stpLogic.getSession(isCreate);
  529. }
  530. /**
  531. * 获取当前已登录账号的 Account-Session,如果该 SaSession 尚未创建,则新建并返回
  532. *
  533. * @return Session对象
  534. */
  535. public static SaSession getSession() {
  536. return stpLogic.getSession();
  537. }
  538. // ------------------- Token-Session 相关 -------------------
  539. /**
  540. * 获取指定 token 的 Token-Session,如果该 SaSession 尚未创建,则新建并返回
  541. *
  542. * @param tokenValue Token值
  543. * @return Session对象
  544. */
  545. public static SaSession getTokenSessionByToken(String tokenValue) {
  546. return stpLogic.getTokenSessionByToken(tokenValue);
  547. }
  548. /**
  549. * 获取当前 token 的 Token-Session,如果该 SaSession 尚未创建,则新建并返回
  550. *
  551. * @return Session对象
  552. */
  553. public static SaSession getTokenSession() {
  554. return stpLogic.getTokenSession();
  555. }
  556. /**
  557. * 获取当前匿名 Token-Session (可在未登录情况下使用的Token-Session)
  558. *
  559. * @return Token-Session 对象
  560. */
  561. public static SaSession getAnonTokenSession() {
  562. return stpLogic.getAnonTokenSession();
  563. }
  564. // ------------------- Active-Timeout token 最低活跃度 验证相关 -------------------
  565. /**
  566. * 续签当前 token:(将 [最后操作时间] 更新为当前时间戳)
  567. * <h2>
  568. * 请注意: 即使 token 已被冻结 也可续签成功,
  569. * 如果此场景下需要提示续签失败,可在此之前调用 checkActiveTimeout() 强制检查是否冻结即可
  570. * </h2>
  571. */
  572. public static void updateLastActiveToNow() {
  573. stpLogic.updateLastActiveToNow();
  574. }
  575. /**
  576. * 检查当前 token 是否已被冻结,如果是则抛出异常
  577. */
  578. public static void checkActiveTimeout() {
  579. stpLogic.checkActiveTimeout();
  580. }
  581. // ------------------- 过期时间相关 -------------------
  582. /**
  583. * 获取当前会话 token 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值)
  584. *
  585. * @return token剩余有效时间
  586. */
  587. public static long getTokenTimeout() {
  588. return stpLogic.getTokenTimeout();
  589. }
  590. /**
  591. * 获取指定 token 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值)
  592. *
  593. * @param token 指定token
  594. * @return token剩余有效时间
  595. */
  596. public static long getTokenTimeout(String token) {
  597. return stpLogic.getTokenTimeout(token);
  598. }
  599. /**
  600. * 获取当前登录账号的 Account-Session 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值)
  601. *
  602. * @return token剩余有效时间
  603. */
  604. public static long getSessionTimeout() {
  605. return stpLogic.getSessionTimeout();
  606. }
  607. /**
  608. * 获取当前 token 的 Token-Session 剩余有效时间(单位: 秒,返回 -1 代表永久有效,-2 代表没有这个值)
  609. *
  610. * @return token剩余有效时间
  611. */
  612. public static long getTokenSessionTimeout() {
  613. return stpLogic.getTokenSessionTimeout();
  614. }
  615. /**
  616. * 获取当前 token 剩余活跃有效期:当前 token 距离被冻结还剩多少时间(单位: 秒,返回 -1 代表永不冻结,-2 代表没有这个值或 token 已被冻结了)
  617. *
  618. * @return /
  619. */
  620. public static long getTokenActiveTimeout() {
  621. return stpLogic.getTokenActiveTimeout();
  622. }
  623. /**
  624. * 对当前 token 的 timeout 值进行续期
  625. *
  626. * @param timeout 要修改成为的有效时间 (单位: 秒)
  627. */
  628. public static void renewTimeout(long timeout) {
  629. stpLogic.renewTimeout(timeout);
  630. }
  631. /**
  632. * 对指定 token 的 timeout 值进行续期
  633. *
  634. * @param tokenValue 指定 token
  635. * @param timeout 要修改成为的有效时间 (单位: 秒,填 -1 代表要续为永久有效)
  636. */
  637. public static void renewTimeout(String tokenValue, long timeout) {
  638. stpLogic.renewTimeout(tokenValue, timeout);
  639. }
  640. // ------------------- 角色认证操作 -------------------
  641. /**
  642. * 获取:当前账号的角色集合
  643. *
  644. * @return /
  645. */
  646. public static List<String> getRoleList() {
  647. return stpLogic.getRoleList();
  648. }
  649. /**
  650. * 获取:指定账号的角色集合
  651. *
  652. * @param loginId 指定账号id
  653. * @return /
  654. */
  655. public static List<String> getRoleList(Object loginId) {
  656. return stpLogic.getRoleList(loginId);
  657. }
  658. /**
  659. * 判断:当前账号是否拥有指定角色, 返回 true 或 false
  660. *
  661. * @param role 角色
  662. * @return /
  663. */
  664. public static boolean hasRole(String role) {
  665. return stpLogic.hasRole(role);
  666. }
  667. /**
  668. * 判断:指定账号是否含有指定角色标识, 返回 true 或 false
  669. *
  670. * @param loginId 账号id
  671. * @param role 角色标识
  672. * @return 是否含有指定角色标识
  673. */
  674. public static boolean hasRole(Object loginId, String role) {
  675. return stpLogic.hasRole(loginId, role);
  676. }
  677. /**
  678. * 判断:当前账号是否含有指定角色标识 [ 指定多个,必须全部验证通过 ]
  679. *
  680. * @param roleArray 角色标识数组
  681. * @return true或false
  682. */
  683. public static boolean hasRoleAnd(String... roleArray){
  684. return stpLogic.hasRoleAnd(roleArray);
  685. }
  686. /**
  687. * 判断:当前账号是否含有指定角色标识 [ 指定多个,只要其一验证通过即可 ]
  688. *
  689. * @param roleArray 角色标识数组
  690. * @return true或false
  691. */
  692. public static boolean hasRoleOr(String... roleArray){
  693. return stpLogic.hasRoleOr(roleArray);
  694. }
  695. /**
  696. * 校验:当前账号是否含有指定角色标识, 如果验证未通过,则抛出异常: NotRoleException
  697. *
  698. * @param role 角色标识
  699. */
  700. public static void checkRole(String role) {
  701. stpLogic.checkRole(role);
  702. }
  703. /**
  704. * 校验:当前账号是否含有指定角色标识 [ 指定多个,必须全部验证通过 ]
  705. *
  706. * @param roleArray 角色标识数组
  707. */
  708. public static void checkRoleAnd(String... roleArray){
  709. stpLogic.checkRoleAnd(roleArray);
  710. }
  711. /**
  712. * 校验:当前账号是否含有指定角色标识 [ 指定多个,只要其一验证通过即可 ]
  713. *
  714. * @param roleArray 角色标识数组
  715. */
  716. public static void checkRoleOr(String... roleArray){
  717. stpLogic.checkRoleOr(roleArray);
  718. }
  719. // ------------------- 权限认证操作 -------------------
  720. /**
  721. * 获取:当前账号的权限码集合
  722. *
  723. * @return /
  724. */
  725. public static List<String> getPermissionList() {
  726. return stpLogic.getPermissionList();
  727. }
  728. /**
  729. * 获取:指定账号的权限码集合
  730. *
  731. * @param loginId 指定账号id
  732. * @return /
  733. */
  734. public static List<String> getPermissionList(Object loginId) {
  735. return stpLogic.getPermissionList(loginId);
  736. }
  737. /**
  738. * 判断:当前账号是否含有指定权限, 返回 true 或 false
  739. *
  740. * @param permission 权限码
  741. * @return 是否含有指定权限
  742. */
  743. public static boolean hasPermission(String permission) {
  744. return stpLogic.hasPermission(permission);
  745. }
  746. /**
  747. * 判断:指定账号 id 是否含有指定权限, 返回 true 或 false
  748. *
  749. * @param loginId 账号 id
  750. * @param permission 权限码
  751. * @return 是否含有指定权限
  752. */
  753. public static boolean hasPermission(Object loginId, String permission) {
  754. return stpLogic.hasPermission(loginId, permission);
  755. }
  756. /**
  757. * 判断:当前账号是否含有指定权限 [ 指定多个,必须全部具有 ]
  758. *
  759. * @param permissionArray 权限码数组
  760. * @return true 或 false
  761. */
  762. public static boolean hasPermissionAnd(String... permissionArray){
  763. return stpLogic.hasPermissionAnd(permissionArray);
  764. }
  765. /**
  766. * 判断:当前账号是否含有指定权限 [ 指定多个,只要其一验证通过即可 ]
  767. *
  768. * @param permissionArray 权限码数组
  769. * @return true 或 false
  770. */
  771. public static boolean hasPermissionOr(String... permissionArray){
  772. return stpLogic.hasPermissionOr(permissionArray);
  773. }
  774. /**
  775. * 校验:当前账号是否含有指定权限, 如果验证未通过,则抛出异常: NotPermissionException
  776. *
  777. * @param permission 权限码
  778. */
  779. public static void checkPermission(String permission) {
  780. stpLogic.checkPermission(permission);
  781. }
  782. /**
  783. * 校验:当前账号是否含有指定权限 [ 指定多个,必须全部验证通过 ]
  784. *
  785. * @param permissionArray 权限码数组
  786. */
  787. public static void checkPermissionAnd(String... permissionArray) {
  788. stpLogic.checkPermissionAnd(permissionArray);
  789. }
  790. /**
  791. * 校验:当前账号是否含有指定权限 [ 指定多个,只要其一验证通过即可 ]
  792. *
  793. * @param permissionArray 权限码数组
  794. */
  795. public static void checkPermissionOr(String... permissionArray) {
  796. stpLogic.checkPermissionOr(permissionArray);
  797. }
  798. // ------------------- id 反查 token 相关操作 -------------------
  799. /**
  800. * 获取指定账号 id 的 token
  801. * <p>
  802. * 在配置为允许并发登录时,此方法只会返回队列的最后一个 token,
  803. * 如果你需要返回此账号 id 的所有 token,请调用 getTokenValueListByLoginId
  804. * </p>
  805. *
  806. * @param loginId 账号id
  807. * @return token值
  808. */
  809. public static String getTokenValueByLoginId(Object loginId) {
  810. return stpLogic.getTokenValueByLoginId(loginId);
  811. }
  812. /**
  813. * 获取指定账号 id 指定设备类型端的 token
  814. * <p>
  815. * 在配置为允许并发登录时,此方法只会返回队列的最后一个 token,
  816. * 如果你需要返回此账号 id 的所有 token,请调用 getTokenValueListByLoginId
  817. * </p>
  818. *
  819. * @param loginId 账号id
  820. * @param deviceType 设备类型,填 null 代表不限设备类型
  821. * @return token值
  822. */
  823. public static String getTokenValueByLoginId(Object loginId, String deviceType) {
  824. return stpLogic.getTokenValueByLoginId(loginId, deviceType);
  825. }
  826. /**
  827. * 获取指定账号 id 的 token 集合
  828. *
  829. * @param loginId 账号id
  830. * @return 此 loginId 的所有相关 token
  831. */
  832. public static List<String> getTokenValueListByLoginId(Object loginId) {
  833. return stpLogic.getTokenValueListByLoginId(loginId);
  834. }
  835. /**
  836. * 获取指定账号 id 指定设备类型端的 token 集合
  837. *
  838. * @param loginId 账号id
  839. * @param deviceType 设备类型,填 null 代表不限设备类型
  840. * @return 此 loginId 的所有登录 token
  841. */
  842. public static List<String> getTokenValueListByLoginId(Object loginId, String deviceType) {
  843. return stpLogic.getTokenValueListByLoginId(loginId, deviceType);
  844. }
  845. /**
  846. * 获取指定账号 id 已登录设备信息集合
  847. *
  848. * @param loginId 账号id
  849. * @return 此 loginId 的所有登录 token
  850. */
  851. public static List<SaTerminalInfo> getTerminalListByLoginId(Object loginId) {
  852. return stpLogic.getTerminalListByLoginId(loginId);
  853. }
  854. /**
  855. * 获取指定账号 id 指定设备类型端的已登录设备信息集合
  856. *
  857. * @param loginId 账号id
  858. * @param deviceType 设备类型,填 null 代表不限设备类型
  859. * @return /
  860. */
  861. public static List<SaTerminalInfo> getTerminalListByLoginId(Object loginId, String deviceType) {
  862. return stpLogic.getTerminalListByLoginId(loginId, deviceType);
  863. }
  864. /**
  865. * 获取指定账号 id 已登录设备信息集合,执行特定函数
  866. *
  867. * @param loginId 账号id
  868. * @param function 需要执行的函数
  869. */
  870. public static void forEachTerminalList(Object loginId, SaTwoParamFunction<SaSession, SaTerminalInfo> function) {
  871. stpLogic.forEachTerminalList(loginId, function);
  872. }
  873. /**
  874. * 返回当前会话的登录设备类型
  875. *
  876. * @return 当前令牌的登录设备类型
  877. */
  878. public static String getLoginDeviceType() {
  879. return stpLogic.getLoginDeviceType();
  880. }
  881. /**
  882. * 返回指定 token 会话的登录设备类型
  883. *
  884. * @param tokenValue 指定token
  885. * @return 当前令牌的登录设备类型
  886. */
  887. public static String getLoginDeviceTypeByToken(String tokenValue) {
  888. return stpLogic.getLoginDeviceTypeByToken(tokenValue);
  889. }
  890. /**
  891. * 获取当前 token 的最后活跃时间(13位时间戳),如果不存在则返回 -2
  892. *
  893. * @return /
  894. */
  895. public static long getTokenLastActiveTime() {
  896. return stpLogic.getTokenLastActiveTime();
  897. }
  898. /**
  899. * 判断对于指定 loginId 来讲,指定设备 id 是否为可信任设备
  900. * @param deviceId /
  901. * @return /
  902. */
  903. public static boolean isTrustDeviceId(Object userId, String deviceId) {
  904. return stpLogic.isTrustDeviceId(userId, deviceId);
  905. }
  906. // ------------------- 会话管理 -------------------
  907. /**
  908. * 根据条件查询缓存中所有的 token
  909. *
  910. * @param keyword 关键字
  911. * @param start 开始处索引
  912. * @param size 获取数量 (-1代表一直获取到末尾)
  913. * @param sortType 排序类型(true=正序,false=反序)
  914. *
  915. * @return token集合
  916. */
  917. public static List<String> searchTokenValue(String keyword, int start, int size, boolean sortType) {
  918. return stpLogic.searchTokenValue(keyword, start, size, sortType);
  919. }
  920. /**
  921. * 根据条件查询缓存中所有的 SessionId
  922. *
  923. * @param keyword 关键字
  924. * @param start 开始处索引
  925. * @param size 获取数量 (-1代表一直获取到末尾)
  926. * @param sortType 排序类型(true=正序,false=反序)
  927. *
  928. * @return sessionId集合
  929. */
  930. public static List<String> searchSessionId(String keyword, int start, int size, boolean sortType) {
  931. return stpLogic.searchSessionId(keyword, start, size, sortType);
  932. }
  933. /**
  934. * 根据条件查询缓存中所有的 Token-Session-Id
  935. *
  936. * @param keyword 关键字
  937. * @param start 开始处索引
  938. * @param size 获取数量 (-1代表一直获取到末尾)
  939. * @param sortType 排序类型(true=正序,false=反序)
  940. *
  941. * @return sessionId集合
  942. */
  943. public static List<String> searchTokenSessionId(String keyword, int start, int size, boolean sortType) {
  944. return stpLogic.searchTokenSessionId(keyword, start, size, sortType);
  945. }
  946. // ------------------- 账号封禁 -------------------
  947. /**
  948. * 封禁:指定账号
  949. * <p> 此方法不会直接将此账号id踢下线,如需封禁后立即掉线,请追加调用 StpUtil.logout(id)
  950. *
  951. * @param loginId 指定账号id
  952. * @param time 封禁时间, 单位: 秒 (-1=永久封禁)
  953. */
  954. public static void disable(Object loginId, long time) {
  955. stpLogic.disable(loginId, time);
  956. }
  957. /**
  958. * 判断:指定账号是否已被封禁 (true=已被封禁, false=未被封禁)
  959. *
  960. * @param loginId 账号id
  961. * @return /
  962. */
  963. public static boolean isDisable(Object loginId) {
  964. return stpLogic.isDisable(loginId);
  965. }
  966. /**
  967. * 校验:指定账号是否已被封禁,如果被封禁则抛出异常
  968. *
  969. * @param loginId 账号id
  970. */
  971. public static void checkDisable(Object loginId) {
  972. stpLogic.checkDisable(loginId);
  973. }
  974. /**
  975. * 获取:指定账号剩余封禁时间,单位:秒(-1=永久封禁,-2=未被封禁)
  976. *
  977. * @param loginId 账号id
  978. * @return /
  979. */
  980. public static long getDisableTime(Object loginId) {
  981. return stpLogic.getDisableTime(loginId);
  982. }
  983. /**
  984. * 解封:指定账号
  985. *
  986. * @param loginId 账号id
  987. */
  988. public static void untieDisable(Object loginId) {
  989. stpLogic.untieDisable(loginId);
  990. }
  991. // ------------------- 分类封禁 -------------------
  992. /**
  993. * 封禁:指定账号的指定服务
  994. * <p> 此方法不会直接将此账号id踢下线,如需封禁后立即掉线,请追加调用 StpUtil.logout(id)
  995. *
  996. * @param loginId 指定账号id
  997. * @param service 指定服务
  998. * @param time 封禁时间, 单位: 秒 (-1=永久封禁)
  999. */
  1000. public static void disable(Object loginId, String service, long time) {
  1001. stpLogic.disable(loginId, service, time);
  1002. }
  1003. /**
  1004. * 判断:指定账号的指定服务 是否已被封禁(true=已被封禁, false=未被封禁)
  1005. *
  1006. * @param loginId 账号id
  1007. * @param service 指定服务
  1008. * @return /
  1009. */
  1010. public static boolean isDisable(Object loginId, String service) {
  1011. return stpLogic.isDisable(loginId, service);
  1012. }
  1013. /**
  1014. * 校验:指定账号 指定服务 是否已被封禁,如果被封禁则抛出异常
  1015. *
  1016. * @param loginId 账号id
  1017. * @param services 指定服务,可以指定多个
  1018. */
  1019. public static void checkDisable(Object loginId, String... services) {
  1020. stpLogic.checkDisable(loginId, services);
  1021. }
  1022. /**
  1023. * 获取:指定账号 指定服务 剩余封禁时间,单位:秒(-1=永久封禁,-2=未被封禁)
  1024. *
  1025. * @param loginId 账号id
  1026. * @param service 指定服务
  1027. * @return see note
  1028. */
  1029. public static long getDisableTime(Object loginId, String service) {
  1030. return stpLogic.getDisableTime(loginId, service);
  1031. }
  1032. /**
  1033. * 解封:指定账号、指定服务
  1034. *
  1035. * @param loginId 账号id
  1036. * @param services 指定服务,可以指定多个
  1037. */
  1038. public static void untieDisable(Object loginId, String... services) {
  1039. stpLogic.untieDisable(loginId, services);
  1040. }
  1041. // ------------------- 阶梯封禁 -------------------
  1042. /**
  1043. * 封禁:指定账号,并指定封禁等级
  1044. *
  1045. * @param loginId 指定账号id
  1046. * @param level 指定封禁等级
  1047. * @param time 封禁时间, 单位: 秒 (-1=永久封禁)
  1048. */
  1049. public static void disableLevel(Object loginId, int level, long time) {
  1050. stpLogic.disableLevel(loginId, level, time);
  1051. }
  1052. /**
  1053. * 封禁:指定账号的指定服务,并指定封禁等级
  1054. *
  1055. * @param loginId 指定账号id
  1056. * @param service 指定封禁服务
  1057. * @param level 指定封禁等级
  1058. * @param time 封禁时间, 单位: 秒 (-1=永久封禁)
  1059. */
  1060. public static void disableLevel(Object loginId, String service, int level, long time) {
  1061. stpLogic.disableLevel(loginId, service, level, time);
  1062. }
  1063. /**
  1064. * 判断:指定账号是否已被封禁到指定等级
  1065. *
  1066. * @param loginId 指定账号id
  1067. * @param level 指定封禁等级
  1068. * @return /
  1069. */
  1070. public static boolean isDisableLevel(Object loginId, int level) {
  1071. return stpLogic.isDisableLevel(loginId, level);
  1072. }
  1073. /**
  1074. * 判断:指定账号的指定服务,是否已被封禁到指定等级
  1075. *
  1076. * @param loginId 指定账号id
  1077. * @param service 指定封禁服务
  1078. * @param level 指定封禁等级
  1079. * @return /
  1080. */
  1081. public static boolean isDisableLevel(Object loginId, String service, int level) {
  1082. return stpLogic.isDisableLevel(loginId, service, level);
  1083. }
  1084. /**
  1085. * 校验:指定账号是否已被封禁到指定等级(如果已经达到,则抛出异常)
  1086. *
  1087. * @param loginId 指定账号id
  1088. * @param level 封禁等级 (只有 封禁等级 ≥ 此值 才会抛出异常)
  1089. */
  1090. public static void checkDisableLevel(Object loginId, int level) {
  1091. stpLogic.checkDisableLevel(loginId, level);
  1092. }
  1093. /**
  1094. * 校验:指定账号的指定服务,是否已被封禁到指定等级(如果已经达到,则抛出异常)
  1095. *
  1096. * @param loginId 指定账号id
  1097. * @param service 指定封禁服务
  1098. * @param level 封禁等级 (只有 封禁等级 ≥ 此值 才会抛出异常)
  1099. */
  1100. public static void checkDisableLevel(Object loginId, String service, int level) {
  1101. stpLogic.checkDisableLevel(loginId, service, level);
  1102. }
  1103. /**
  1104. * 获取:指定账号被封禁的等级,如果未被封禁则返回-2
  1105. *
  1106. * @param loginId 指定账号id
  1107. * @return /
  1108. */
  1109. public static int getDisableLevel(Object loginId) {
  1110. return stpLogic.getDisableLevel(loginId);
  1111. }
  1112. /**
  1113. * 获取:指定账号的 指定服务 被封禁的等级,如果未被封禁则返回-2
  1114. *
  1115. * @param loginId 指定账号id
  1116. * @param service 指定封禁服务
  1117. * @return /
  1118. */
  1119. public static int getDisableLevel(Object loginId, String service) {
  1120. return stpLogic.getDisableLevel(loginId, service);
  1121. }
  1122. // ------------------- 临时身份切换 -------------------
  1123. /**
  1124. * 临时切换身份为指定账号id
  1125. *
  1126. * @param loginId 指定loginId
  1127. */
  1128. public static void switchTo(Object loginId) {
  1129. stpLogic.switchTo(loginId);
  1130. }
  1131. /**
  1132. * 结束临时切换身份
  1133. */
  1134. public static void endSwitch() {
  1135. stpLogic.endSwitch();
  1136. }
  1137. /**
  1138. * 判断当前请求是否正处于 [ 身份临时切换 ] 中
  1139. *
  1140. * @return /
  1141. */
  1142. public static boolean isSwitch() {
  1143. return stpLogic.isSwitch();
  1144. }
  1145. /**
  1146. * 在一个 lambda 代码段里,临时切换身份为指定账号id,lambda 结束后自动恢复
  1147. *
  1148. * @param loginId 指定账号id
  1149. * @param function 要执行的方法
  1150. */
  1151. public static void switchTo(Object loginId, SaFunction function) {
  1152. stpLogic.switchTo(loginId, function);
  1153. }
  1154. // ------------------- 二级认证 -------------------
  1155. /**
  1156. * 在当前会话 开启二级认证
  1157. *
  1158. * @param safeTime 维持时间 (单位: 秒)
  1159. */
  1160. public static void openSafe(long safeTime) {
  1161. stpLogic.openSafe(safeTime);
  1162. }
  1163. /**
  1164. * 在当前会话 开启二级认证
  1165. *
  1166. * @param service 业务标识
  1167. * @param safeTime 维持时间 (单位: 秒)
  1168. */
  1169. public static void openSafe(String service, long safeTime) {
  1170. stpLogic.openSafe(service, safeTime);
  1171. }
  1172. /**
  1173. * 判断:当前会话是否处于二级认证时间内
  1174. *
  1175. * @return true=二级认证已通过, false=尚未进行二级认证或认证已超时
  1176. */
  1177. public static boolean isSafe() {
  1178. return stpLogic.isSafe();
  1179. }
  1180. /**
  1181. * 判断:当前会话 是否处于指定业务的二级认证时间内
  1182. *
  1183. * @param service 业务标识
  1184. * @return true=二级认证已通过, false=尚未进行二级认证或认证已超时
  1185. */
  1186. public static boolean isSafe(String service) {
  1187. return stpLogic.isSafe(service);
  1188. }
  1189. /**
  1190. * 判断:指定 token 是否处于二级认证时间内
  1191. *
  1192. * @param tokenValue Token 值
  1193. * @param service 业务标识
  1194. * @return true=二级认证已通过, false=尚未进行二级认证或认证已超时
  1195. */
  1196. public static boolean isSafe(String tokenValue, String service) {
  1197. return stpLogic.isSafe(tokenValue, service);
  1198. }
  1199. /**
  1200. * 校验:当前会话是否已通过二级认证,如未通过则抛出异常
  1201. */
  1202. public static void checkSafe() {
  1203. stpLogic.checkSafe();
  1204. }
  1205. /**
  1206. * 校验:检查当前会话是否已通过指定业务的二级认证,如未通过则抛出异常
  1207. *
  1208. * @param service 业务标识
  1209. */
  1210. public static void checkSafe(String service) {
  1211. stpLogic.checkSafe(service);
  1212. }
  1213. /**
  1214. * 获取:当前会话的二级认证剩余有效时间(单位: 秒, 返回-2代表尚未通过二级认证)
  1215. *
  1216. * @return 剩余有效时间
  1217. */
  1218. public static long getSafeTime() {
  1219. return stpLogic.getSafeTime();
  1220. }
  1221. /**
  1222. * 获取:当前会话的二级认证剩余有效时间(单位: 秒, 返回-2代表尚未通过二级认证)
  1223. *
  1224. * @param service 业务标识
  1225. * @return 剩余有效时间
  1226. */
  1227. public static long getSafeTime(String service) {
  1228. return stpLogic.getSafeTime(service);
  1229. }
  1230. /**
  1231. * 在当前会话 结束二级认证
  1232. */
  1233. public static void closeSafe() {
  1234. stpLogic.closeSafe();
  1235. }
  1236. /**
  1237. * 在当前会话 结束指定业务标识的二级认证
  1238. *
  1239. * @param service 业务标识
  1240. */
  1241. public static void closeSafe(String service) {
  1242. stpLogic.closeSafe(service);
  1243. }
  1244. // ------------------- Bean 对象、字段代理 -------------------
  1245. /**
  1246. * 根据当前配置对象创建一个 SaLoginParameter 对象
  1247. *
  1248. * @return /
  1249. */
  1250. public static SaLoginParameter createSaLoginParameter() {
  1251. return stpLogic.createSaLoginParameter();
  1252. }
  1253. // ------------------- 过期方法 -------------------
  1254. /**
  1255. * <h2>请更换为 getLoginDeviceType </h2>
  1256. * 返回当前会话的登录设备类型
  1257. *
  1258. * @return 当前令牌的登录设备类型
  1259. */
  1260. @Deprecated
  1261. public static String getLoginDevice() {
  1262. return stpLogic.getLoginDevice();
  1263. }
  1264. /**
  1265. * <h2>请更换为 getLoginDeviceTypeByToken </h2>
  1266. * 返回指定 token 会话的登录设备类型
  1267. *
  1268. * @param tokenValue 指定token
  1269. * @return 当前令牌的登录设备类型
  1270. */
  1271. @Deprecated
  1272. public static String getLoginDeviceByToken(String tokenValue) {
  1273. return stpLogic.getLoginDeviceByToken(tokenValue);
  1274. }
  1275. }