4
4
import com .codingapi .springboot .security .gateway .Token ;
5
5
import org .springframework .data .redis .core .RedisTemplate ;
6
6
7
+ import java .util .ArrayList ;
7
8
import java .util .List ;
8
9
import java .util .Set ;
9
10
import java .util .UUID ;
@@ -30,8 +31,14 @@ public Token create(String username, String iv, List<String> authorities, String
30
31
return token ;
31
32
}
32
33
33
- public Token parser (String sign ) {
34
- String json = redisTemplate .opsForValue ().get (sign );
34
+ /**
35
+ * 根据token获取用户信息
36
+ *
37
+ * @param token token
38
+ * @return 用户信息
39
+ */
40
+ public Token getToken (String token ) {
41
+ String json = redisTemplate .opsForValue ().get (token );
35
42
if (json == null ) {
36
43
return null ;
37
44
}
@@ -40,6 +47,7 @@ public Token parser(String sign) {
40
47
41
48
/**
42
49
* 删除token
50
+ *
43
51
* @param token token
44
52
*/
45
53
public void removeToken (String token ) {
@@ -48,33 +56,49 @@ public void removeToken(String token) {
48
56
49
57
/**
50
58
* 重置token
59
+ *
51
60
* @param token token
52
61
*/
53
- public void resetToken (Token token ){
62
+ public void resetToken (Token token ) {
54
63
redisTemplate .opsForValue ().set (token .getToken (), token .toJson (), validTime , TimeUnit .MILLISECONDS );
55
64
}
56
65
57
66
/**
58
67
* 删除用户
68
+ *
59
69
* @param username 用户名
60
70
*/
61
71
public void removeUsername (String username ) {
62
72
Set <String > keys = redisTemplate .keys (username + ":*" );
63
- if (keys != null && !keys .isEmpty ()) {
73
+ if (!keys .isEmpty ()) {
64
74
redisTemplate .delete (keys );
65
75
}
66
76
}
67
77
78
+
68
79
/**
69
- * 自定义删除用户
80
+ * 获取用户的所有token
81
+ *
70
82
* @param username 用户名
83
+ * @return token列表
84
+ */
85
+ public List <String > getTokensByUsername (String username ) {
86
+ Set <String > keys = redisTemplate .keys (username + ":*" );
87
+ return new ArrayList <>(keys );
88
+ }
89
+
90
+
91
+ /**
92
+ * 自定义删除用户
93
+ *
94
+ * @param username 用户名
71
95
* @param predicate 条件
72
96
*/
73
97
public void removeUsername (String username , Predicate <Token > predicate ) {
74
98
Set <String > keys = redisTemplate .keys (username + ":*" );
75
- if (keys != null && !keys .isEmpty ()) {
99
+ if (!keys .isEmpty ()) {
76
100
for (String key : keys ) {
77
- Token token = parser (key );
101
+ Token token = getToken (key );
78
102
if (token != null && predicate .test (token )) {
79
103
redisTemplate .delete (key );
80
104
}
0 commit comments