Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
112Lst
coder_club
提交
fc9b3605
C
coder_club
项目概览
112Lst
/
coder_club
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
coder_club
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
fc9b3605
编写于
4月 17, 2024
作者:
112Lst
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
【add】gateway缓存集成
上级
ca8c0ddc
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
199 addition
and
0 deletion
+199
-0
club-gateway/src/main/java/com/lssst/club/gateway/auth/StpInterfaceImpl.java
...in/java/com/lssst/club/gateway/auth/StpInterfaceImpl.java
+48
-0
club-gateway/src/main/java/com/lssst/club/gateway/redis/RedisConfig.java
...c/main/java/com/lssst/club/gateway/redis/RedisConfig.java
+46
-0
club-gateway/src/main/java/com/lssst/club/gateway/redis/RedisUtil.java
...src/main/java/com/lssst/club/gateway/redis/RedisUtil.java
+105
-0
未找到文件。
club-gateway/src/main/java/com/lssst/club/gateway/auth/StpInterfaceImpl.java
0 → 100644
浏览文件 @
fc9b3605
package
com.lssst.club.gateway.auth
;
import
cn.dev33.satoken.stp.StpInterface
;
import
com.alibaba.cloud.commons.lang.StringUtils
;
import
com.google.gson.Gson
;
import
com.lssst.club.gateway.redis.RedisUtil
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.Collections
;
import
java.util.List
;
/**
* 自定义权限验证接口扩展
*/
@Component
public
class
StpInterfaceImpl
implements
StpInterface
{
@Resource
private
RedisUtil
redisUtil
;
private
String
authPermissionPrefix
=
"auth.permission"
;
private
String
authRolePrefix
=
"auth.role"
;
@Override
public
List
<
String
>
getPermissionList
(
Object
loginId
,
String
loginType
)
{
System
.
out
.
println
(
"123"
);
return
getAuth
(
loginId
.
toString
(),
authPermissionPrefix
);
}
@Override
public
List
<
String
>
getRoleList
(
Object
loginId
,
String
loginType
)
{
return
getAuth
(
loginId
.
toString
(),
authRolePrefix
);
}
private
List
<
String
>
getAuth
(
String
loginId
,
String
prefix
)
{
String
authKey
=
redisUtil
.
buildKey
(
prefix
,
loginId
.
toString
());
String
authValue
=
redisUtil
.
get
(
authKey
);
if
(
StringUtils
.
isBlank
(
authValue
))
{
return
Collections
.
emptyList
();
}
List
<
String
>
authList
=
new
Gson
().
fromJson
(
authValue
,
List
.
class
);
return
authList
;
}
}
club-gateway/src/main/java/com/lssst/club/gateway/redis/RedisConfig.java
0 → 100644
浏览文件 @
fc9b3605
package
com.lssst.club.gateway.redis
;
import
com.fasterxml.jackson.annotation.JsonAutoDetect
;
import
com.fasterxml.jackson.annotation.JsonTypeInfo
;
import
com.fasterxml.jackson.annotation.PropertyAccessor
;
import
com.fasterxml.jackson.databind.DeserializationFeature
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer
;
import
org.springframework.data.redis.serializer.RedisSerializer
;
import
org.springframework.data.redis.serializer.StringRedisSerializer
;
/**
* Redis的config处理
*/
@Configuration
public
class
RedisConfig
{
@Bean
public
RedisTemplate
<
String
,
Object
>
redisTemplate
(
RedisConnectionFactory
redisConnectionFactory
)
{
RedisTemplate
<
String
,
Object
>
redisTemplate
=
new
RedisTemplate
<>();
RedisSerializer
<
String
>
redisSerializer
=
new
StringRedisSerializer
();
redisTemplate
.
setConnectionFactory
(
redisConnectionFactory
);
redisTemplate
.
setKeySerializer
(
redisSerializer
);
redisTemplate
.
setHashKeySerializer
(
redisSerializer
);
redisTemplate
.
setValueSerializer
(
jackson2JsonRedisSerializer
());
redisTemplate
.
setHashValueSerializer
(
jackson2JsonRedisSerializer
());
return
redisTemplate
;
}
private
Jackson2JsonRedisSerializer
<
Object
>
jackson2JsonRedisSerializer
()
{
Jackson2JsonRedisSerializer
<
Object
>
jsonRedisSerializer
=
new
Jackson2JsonRedisSerializer
<>(
Object
.
class
);
ObjectMapper
objectMapper
=
new
ObjectMapper
();
objectMapper
.
setVisibility
(
PropertyAccessor
.
ALL
,
JsonAutoDetect
.
Visibility
.
ANY
);
objectMapper
.
configure
(
DeserializationFeature
.
FAIL_ON_UNKNOWN_PROPERTIES
,
false
);
objectMapper
.
enableDefaultTyping
(
ObjectMapper
.
DefaultTyping
.
NON_FINAL
,
JsonTypeInfo
.
As
.
PROPERTY
);
jsonRedisSerializer
.
setObjectMapper
(
objectMapper
);
return
jsonRedisSerializer
;
}
}
club-gateway/src/main/java/com/lssst/club/gateway/redis/RedisUtil.java
0 → 100644
浏览文件 @
fc9b3605
package
com.lssst.club.gateway.redis
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.Set
;
import
java.util.concurrent.TimeUnit
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
* RedisUtil工具类
*/
@Component
@Slf4j
public
class
RedisUtil
{
@Resource
private
RedisTemplate
redisTemplate
;
private
static
final
String
CACHE_KEY_SEPARATOR
=
"."
;
/**
* 构建缓存key
*/
public
String
buildKey
(
String
...
strObjs
)
{
return
Stream
.
of
(
strObjs
).
collect
(
Collectors
.
joining
(
CACHE_KEY_SEPARATOR
));
}
/**
* 是否存在key
*/
public
boolean
exist
(
String
key
)
{
return
redisTemplate
.
hasKey
(
key
);
}
/**
* 删除key
*/
public
boolean
del
(
String
key
)
{
return
redisTemplate
.
delete
(
key
);
}
/**
* set(不带过期)
*/
public
void
set
(
String
key
,
String
value
)
{
redisTemplate
.
opsForValue
().
set
(
key
,
value
);
}
/**
* set(带过期)
*/
public
boolean
setNx
(
String
key
,
String
value
,
Long
time
,
TimeUnit
timeUnit
)
{
return
redisTemplate
.
opsForValue
().
setIfAbsent
(
key
,
value
,
time
,
timeUnit
);
}
/**
* 获取string类型缓存
*/
public
String
get
(
String
key
)
{
return
(
String
)
redisTemplate
.
opsForValue
().
get
(
key
);
}
public
Boolean
zAdd
(
String
key
,
String
value
,
Long
score
)
{
return
redisTemplate
.
opsForZSet
().
add
(
key
,
value
,
Double
.
valueOf
(
String
.
valueOf
(
score
)));
}
public
Long
countZset
(
String
key
)
{
return
redisTemplate
.
opsForZSet
().
size
(
key
);
}
public
Set
<
String
>
rangeZset
(
String
key
,
long
start
,
long
end
)
{
return
redisTemplate
.
opsForZSet
().
range
(
key
,
start
,
end
);
}
public
Long
removeZset
(
String
key
,
Object
value
)
{
return
redisTemplate
.
opsForZSet
().
remove
(
key
,
value
);
}
public
void
removeZsetList
(
String
key
,
Set
<
String
>
value
)
{
value
.
stream
().
forEach
((
val
)
->
redisTemplate
.
opsForZSet
().
remove
(
key
,
val
));
}
public
Double
score
(
String
key
,
Object
value
)
{
return
redisTemplate
.
opsForZSet
().
score
(
key
,
value
);
}
public
Set
<
String
>
rangeByScore
(
String
key
,
long
start
,
long
end
)
{
return
redisTemplate
.
opsForZSet
().
rangeByScore
(
key
,
Double
.
valueOf
(
String
.
valueOf
(
start
)),
Double
.
valueOf
(
String
.
valueOf
(
end
)));
}
public
Object
addScore
(
String
key
,
Object
obj
,
double
score
)
{
return
redisTemplate
.
opsForZSet
().
incrementScore
(
key
,
obj
,
score
);
}
public
Object
rank
(
String
key
,
Object
obj
)
{
return
redisTemplate
.
opsForZSet
().
rank
(
key
,
obj
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录