mirror of
https://gitee.com/dromara/sa-token.git
synced 2025-12-19 19:46:56 +08:00
Merge branch 'dev' of github.com:dromara/sa-token into dev
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package cn.dev33.satoken.listener;
|
||||
|
||||
import java.util.Date;
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
|
||||
import cn.dev33.satoken.SaManager;
|
||||
import cn.dev33.satoken.stp.SaLoginModel;
|
||||
@@ -50,8 +52,9 @@ public class SaTokenListenerForConsolePrint implements SaTokenListener {
|
||||
*/
|
||||
@Override
|
||||
public void doDisable(String loginType, Object loginId, String service, int level, long disableTime) {
|
||||
Date date = new Date(System.currentTimeMillis() + disableTime * 1000);
|
||||
println("账号[" + loginId + "] " + service + " 服务被封禁,封禁等级=" + level + " (解封时间: " + SaFoxUtil.formatDate(date) + ")");
|
||||
Instant instant = Instant.ofEpochMilli(System.currentTimeMillis() + disableTime * 1000);
|
||||
ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, ZoneId.systemDefault());
|
||||
println("账号[" + loginId + "] " + service + " 服务被封禁,封禁等级=" + level + " (解封时间: " + SaFoxUtil.formatDate(zonedDateTime) + ")");
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,6 +4,8 @@ import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLDecoder;
|
||||
import java.net.URLEncoder;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
@@ -109,6 +111,15 @@ public class SaFoxUtil {
|
||||
public static String formatDate(Date date){
|
||||
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
|
||||
}
|
||||
|
||||
/**
|
||||
* 将日期格式化 (yyyy-MM-dd HH:mm:ss)
|
||||
* @param zonedDateTime 日期
|
||||
* @return 格式化后的时间
|
||||
*/
|
||||
public static String formatDate(ZonedDateTime zonedDateTime) {
|
||||
return zonedDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 从集合里查询数据
|
||||
|
||||
@@ -47,9 +47,9 @@ StpUtil.logout(); // 会话注销
|
||||
StpUtil.logout(10001); // 会话注销,根据账号id
|
||||
StpUtil.logout(10001, "PC"); // 会话注销,根据账号id 和 设备类型
|
||||
StpUtil.logoutByTokenValue(token); // 指定 Token 强制注销
|
||||
StpUtil.kickout(10001); // 踢人下线
|
||||
StpUtil.kickout(10001, "PC"); // 踢人下线,根据账号id
|
||||
StpUtil.kickoutByTokenValue(token); // 踢人下线,根据账号id 和 设备类型
|
||||
StpUtil.kickout(10001); // 踢人下线,根据账号id
|
||||
StpUtil.kickout(10001, "PC"); // 踢人下线,根据账号id 和 设备类型
|
||||
StpUtil.kickoutByTokenValue(token); // 踢人下线,根据token
|
||||
```
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ StpUtil.searchTokenSessionId(keyword, start, size, sortType); // 根据条件
|
||||
|
||||
### 11、账号封禁
|
||||
``` java
|
||||
StpUtil.disable(10001, 1200); // 封禁:指定账号
|
||||
StpUtil.disable(10001, 1200); // 封禁:指定账号 指定时间(单位s)
|
||||
StpUtil.isDisable(10001); // 判断:指定账号是否已被封禁 (true=已被封禁, false=未被封禁)
|
||||
StpUtil.checkDisable(10001); // 校验:指定账号是否已被封禁,如果被封禁则抛出异常 `DisableServiceException`
|
||||
StpUtil.getDisableTime(10001); // 获取:指定账号剩余封禁时间,单位:秒(-1=永久封禁,-2=未被封禁)
|
||||
@@ -160,9 +160,9 @@ StpUtil.untieDisable(loginId); // 解封:指定账号
|
||||
```
|
||||
|
||||
|
||||
### 12、分类封禁
|
||||
### 12、分类封禁 (version >= 1.31.0)
|
||||
``` java
|
||||
StpUtil.disable(10001, "<业务标识>", 86400); // 封禁:指定账号的指定服务
|
||||
StpUtil.disable(10001, "<业务标识>", 86400); // 封禁:指定账号的指定服务 指定时间(单位s)
|
||||
StpUtil.isDisable(10001, "<业务标识>"); // 判断:指定账号的指定服务 是否已被封禁 (true=已被封禁, false=未被封禁)
|
||||
StpUtil.checkDisable(10001, "<业务标识>"); // 校验:指定账号的指定服务 是否已被封禁,如果被封禁则抛出异常 `DisableServiceException`
|
||||
StpUtil.getDisableTime(10001, "<业务标识>"); // 获取:指定账号的指定服务 剩余封禁时间,单位:秒(-1=永久封禁,-2=未被封禁)
|
||||
@@ -170,7 +170,7 @@ StpUtil.untieDisable(loginId, "<业务标识>"); // 解封:指定账号的
|
||||
```
|
||||
|
||||
|
||||
### 13、阶梯封禁
|
||||
### 13、阶梯封禁 (version >= 1.31.0)
|
||||
``` java
|
||||
StpUtil.disableLevel(10001, "comment", 3, 10000); // 分类阶梯封禁,参数:封禁账号、封禁服务、封禁级别、封禁时间
|
||||
StpUtil.getDisableLevel(10001, "comment"); // 获取:指定账号的指定服务 封禁的级别 (如果此账号未被封禁则返回 -2)
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
package cn.dev33.satoken.core.util;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
@@ -51,8 +53,10 @@ public class SaFoxUtilTest {
|
||||
|
||||
@Test
|
||||
public void formatDate() {
|
||||
String formatDate = SaFoxUtil.formatDate(new Date(1644328600364L));
|
||||
Assertions.assertEquals(formatDate, "2022-02-08 21:56:40");
|
||||
Instant instant = Instant.ofEpochMilli(1644328600364L);
|
||||
ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, ZoneId.of("Asia/Shanghai"));
|
||||
String formatDate = SaFoxUtil.formatDate(zonedDateTime);
|
||||
Assertions.assertEquals(formatDate, "2022-02-08 21:56:40");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user