Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
有来技术
youlai-boot
提交
cd4f14e6
Y
youlai-boot
项目概览
有来技术
/
youlai-boot
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
youlai-boot
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
cd4f14e6
编写于
12月 13, 2023
作者:
H
haoxr
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: 包结构优化,websocket 重构
上级
28646fdf
变更
25
隐藏空白更改
内联
并排
Showing
25 changed file
with
160 addition
and
96 deletion
+160
-96
README.md
README.md
+10
-4
pom.xml
pom.xml
+1
-1
src/main/java/com/youlai/system/common/util/SecurityUtils.java
...ain/java/com/youlai/system/common/util/SecurityUtils.java
+1
-1
src/main/java/com/youlai/system/config/MybatisConfig.java
src/main/java/com/youlai/system/config/MybatisConfig.java
+4
-4
src/main/java/com/youlai/system/config/SecurityConfig.java
src/main/java/com/youlai/system/config/SecurityConfig.java
+5
-5
src/main/java/com/youlai/system/config/WebSocketConfig.java
src/main/java/com/youlai/system/config/WebSocketConfig.java
+111
-0
src/main/java/com/youlai/system/config/XxlJobConfig.java
src/main/java/com/youlai/system/config/XxlJobConfig.java
+1
-1
src/main/java/com/youlai/system/controller/WebsocketController.java
...ava/com/youlai/system/controller/WebsocketController.java
+8
-5
src/main/java/com/youlai/system/core/mybatis/annotation/DataPermission.java
...youlai/system/core/mybatis/annotation/DataPermission.java
+1
-1
src/main/java/com/youlai/system/core/mybatis/handler/MyDataPermissionHandler.java
.../system/core/mybatis/handler/MyDataPermissionHandler.java
+2
-2
src/main/java/com/youlai/system/core/mybatis/handler/MyMetaObjectHandler.java
...ulai/system/core/mybatis/handler/MyMetaObjectHandler.java
+1
-1
src/main/java/com/youlai/system/core/security/exception/MyAccessDeniedHandler.java
...system/core/security/exception/MyAccessDeniedHandler.java
+1
-1
src/main/java/com/youlai/system/core/security/exception/MyAuthenticationEntryPoint.java
...m/core/security/exception/MyAuthenticationEntryPoint.java
+1
-1
src/main/java/com/youlai/system/core/security/jwt/JwtTokenFilter.java
...a/com/youlai/system/core/security/jwt/JwtTokenFilter.java
+1
-1
src/main/java/com/youlai/system/core/security/jwt/JwtTokenProvider.java
...com/youlai/system/core/security/jwt/JwtTokenProvider.java
+2
-2
src/main/java/com/youlai/system/core/security/model/SysUserDetails.java
...com/youlai/system/core/security/model/SysUserDetails.java
+1
-1
src/main/java/com/youlai/system/core/security/service/PermissionService.java
...oulai/system/core/security/service/PermissionService.java
+1
-1
src/main/java/com/youlai/system/core/security/service/SysUserDetailsService.java
...i/system/core/security/service/SysUserDetailsService.java
+2
-2
src/main/java/com/youlai/system/mapper/SysDeptMapper.java
src/main/java/com/youlai/system/mapper/SysDeptMapper.java
+1
-1
src/main/java/com/youlai/system/mapper/SysUserMapper.java
src/main/java/com/youlai/system/mapper/SysUserMapper.java
+1
-1
src/main/java/com/youlai/system/model/dto/ChatMessage.java
src/main/java/com/youlai/system/model/dto/ChatMessage.java
+1
-1
src/main/java/com/youlai/system/plugin/dupsubmit/aspect/DuplicateSubmitAspect.java
...system/plugin/dupsubmit/aspect/DuplicateSubmitAspect.java
+1
-1
src/main/java/com/youlai/system/plugin/websocket/WebsocketChannelInterceptor.java
.../system/plugin/websocket/WebsocketChannelInterceptor.java
+0
-55
src/main/java/com/youlai/system/service/impl/AuthServiceImpl.java
.../java/com/youlai/system/service/impl/AuthServiceImpl.java
+1
-2
src/main/java/com/youlai/system/service/impl/SysRoleServiceImpl.java
...va/com/youlai/system/service/impl/SysRoleServiceImpl.java
+1
-1
未找到文件。
README.md
浏览文件 @
cd4f14e6
...
...
@@ -45,17 +45,22 @@ youlai-boot
├── mysql5 # MySQL5 脚本
├── mysql8 # MySQL8 脚本
├── src # 源码目录
├── base # 核心模块
├── mybatisplus # Mybatis-Plus 配置和插件
├── security # Spring Security 安全配置和扩展
├── common # 公共模块
├── config # 自动装配配置
├── CorsConfig # 跨域共享配置
├── RedisConfig # Redis 配置
├── MybatisConfig # Mybatis 自动装配配置
├── RedisCacheConfig # Redis 缓存自动装配配置
├── RedisConfig # Redis 自动装配配置
├── SecurityConfig # Spring Security 自动装配配置
├── SwaggerConfig # API 接口文档配置
├── WebMvcConfig # WebMvc 配置
├── WebSocketConfig # WebSocket 自动装配配置
├── XxlJobConfig # XXL-JOB 自动装配配置
├── controller # 控制层
├── converter # MapStruct转换器
├── core # 核心模块
├── security # Spring Security 安全配置和扩展
├── mybatis # Mybatis-Plus 配置和插件
├── filter # 过滤器
├── RequestLogFilter # 请求日志过滤器
├── VerifyCodeFilter # 验证码过滤器
...
...
@@ -68,6 +73,7 @@ youlai-boot
├── vo # 视图对象
├── mapper # 数据库访问层
├── plugin # 插件(可选)
├── captcha # 验证码插件,用于生成验证码
├── dupsubmit # 防重提交插件,用于防止表单重复提交
├── easyexcel # EasyExcel 插件,Excel 文件的读写
├── rabbitmq # RabbitMQ 插件,消息队列交互
...
...
pom.xml
浏览文件 @
cd4f14e6
...
...
@@ -6,7 +6,7 @@
<groupId>
com.youlai
</groupId>
<artifactId>
youlai-boot
</artifactId>
<version>
2.5.
0
</version>
<version>
2.5.
1
</version>
<description>
基于 Java 17 + SpringBoot 3 构建的权限管理系统。
</description>
<parent>
...
...
src/main/java/com/youlai/system/common/util/SecurityUtils.java
浏览文件 @
cd4f14e6
...
...
@@ -4,7 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.util.StrUtil
;
import
com.youlai.system.common.constant.SystemConstants
;
import
com.youlai.system.
bas
e.security.model.SysUserDetails
;
import
com.youlai.system.
cor
e.security.model.SysUserDetails
;
import
org.springframework.security.core.Authentication
;
import
org.springframework.security.core.GrantedAuthority
;
import
org.springframework.security.core.context.SecurityContextHolder
;
...
...
src/main/java/com/youlai/system/
base/mybatisplus/config/MybatisPlu
sConfig.java
→
src/main/java/com/youlai/system/
config/Mybati
sConfig.java
浏览文件 @
cd4f14e6
package
com.youlai.system.
base.mybatisplus.
config
;
package
com.youlai.system.config
;
import
com.baomidou.mybatisplus.annotation.DbType
;
import
com.baomidou.mybatisplus.core.config.GlobalConfig
;
import
com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor
;
import
com.baomidou.mybatisplus.extension.plugins.inner.DataPermissionInterceptor
;
import
com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor
;
import
com.youlai.system.
base.mybatisplu
s.handler.MyDataPermissionHandler
;
import
com.youlai.system.
base.mybatisplu
s.handler.MyMetaObjectHandler
;
import
com.youlai.system.
core.mybati
s.handler.MyDataPermissionHandler
;
import
com.youlai.system.
core.mybati
s.handler.MyMetaObjectHandler
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.transaction.annotation.EnableTransactionManagement
;
...
...
@@ -19,7 +19,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
*/
@Configuration
@EnableTransactionManagement
public
class
Mybatis
Plus
Config
{
public
class
MybatisConfig
{
/**
* 分页插件和数据权限插件
...
...
src/main/java/com/youlai/system/
base/security/
config/SecurityConfig.java
→
src/main/java/com/youlai/system/config/SecurityConfig.java
浏览文件 @
cd4f14e6
package
com.youlai.system.
base.security.
config
;
package
com.youlai.system.config
;
import
com.youlai.system.common.constant.SecurityConstants
;
import
com.youlai.system.
bas
e.security.exception.MyAccessDeniedHandler
;
import
com.youlai.system.
bas
e.security.exception.MyAuthenticationEntryPoint
;
import
com.youlai.system.
bas
e.security.jwt.JwtTokenFilter
;
import
com.youlai.system.
cor
e.security.exception.MyAccessDeniedHandler
;
import
com.youlai.system.
cor
e.security.exception.MyAuthenticationEntryPoint
;
import
com.youlai.system.
cor
e.security.jwt.JwtTokenFilter
;
import
com.youlai.system.filter.VerifyCodeFilter
;
import
com.youlai.system.
bas
e.security.jwt.JwtTokenProvider
;
import
com.youlai.system.
cor
e.security.jwt.JwtTokenProvider
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
...
...
src/main/java/com/youlai/system/
plugin/websocket
/WebSocketConfig.java
→
src/main/java/com/youlai/system/
config
/WebSocketConfig.java
浏览文件 @
cd4f14e6
package
com.youlai.system.
plugin.websocket
;
package
com.youlai.system.
config
;
import
cn.hutool.core.util.StrUtil
;
import
com.youlai.system.core.security.jwt.JwtTokenProvider
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.messaging.Message
;
import
org.springframework.messaging.MessageChannel
;
import
org.springframework.messaging.simp.config.ChannelRegistration
;
import
org.springframework.messaging.simp.config.MessageBrokerRegistry
;
import
org.springframework.messaging.simp.stomp.StompCommand
;
import
org.springframework.messaging.simp.stomp.StompHeaderAccessor
;
import
org.springframework.messaging.support.ChannelInterceptor
;
import
org.springframework.messaging.support.MessageHeaderAccessor
;
import
org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker
;
import
org.springframework.web.socket.config.annotation.StompEndpointRegistry
;
import
org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer
;
...
...
@@ -18,9 +27,10 @@ import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerCo
@Configuration
@EnableWebSocketMessageBroker
// 启用WebSocket消息代理功能和配置STOMP协议,实现实时双向通信和消息传递
@RequiredArgsConstructor
@Slf4j
public
class
WebSocketConfig
implements
WebSocketMessageBrokerConfigurer
{
private
final
WebsocketChannelInterceptor
websocketChannelIntercepto
r
;
private
final
JwtTokenProvider
jwtTokenProvide
r
;
/**
* 注册一个端点,客户端通过这个端点进行连接
...
...
@@ -58,6 +68,44 @@ public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
*/
@Override
public
void
configureClientInboundChannel
(
ChannelRegistration
registration
)
{
registration
.
interceptors
(
websocketChannelInterceptor
);
registration
.
interceptors
(
new
ChannelInterceptor
()
{
@Override
public
Message
<?>
preSend
(
Message
<?>
message
,
MessageChannel
channel
)
{
StompHeaderAccessor
accessor
=
MessageHeaderAccessor
.
getAccessor
(
message
,
StompHeaderAccessor
.
class
);
// 如果 StompHeaderAccessor 为 null,说明不是 STOMP 消息,直接放行
if
(
accessor
==
null
)
{
return
ChannelInterceptor
.
super
.
preSend
(
message
,
channel
);
}
// 如果是连接请求(CONNECT 命令),从请求头中取出 token 并设置到认证信息中
if
(
StompCommand
.
CONNECT
.
equals
(
accessor
.
getCommand
()))
{
// 从连接头中提取授权令牌
String
bearerToken
=
accessor
.
getFirstNativeHeader
(
HttpHeaders
.
AUTHORIZATION
);
// 验证令牌格式并提取用户信息
if
(
StrUtil
.
isNotBlank
(
bearerToken
)
&&
bearerToken
.
startsWith
(
"Bearer "
))
{
try
{
// 移除 "Bearer " 前缀
String
tokenWithoutPrefix
=
bearerToken
.
substring
(
7
);
String
username
=
jwtTokenProvider
.
getUsername
(
tokenWithoutPrefix
);
// 如果用户名有效,设置用户到访问器中
if
(
StrUtil
.
isNotBlank
(
username
))
{
accessor
.
setUser
(()
->
username
);
return
message
;
}
}
catch
(
Exception
e
)
{
// 异常处理,可能是解析令牌失败
log
.
error
(
"Failed to process authentication token."
,
e
);
}
}
}
// 如果不是连接命令或授权失败,继续执行默认逻辑
return
ChannelInterceptor
.
super
.
preSend
(
message
,
channel
);
}
});
}
}
src/main/java/com/youlai/system/
plugin/xxljob
/XxlJobConfig.java
→
src/main/java/com/youlai/system/
config
/XxlJobConfig.java
浏览文件 @
cd4f14e6
package
com.youlai.system.
plugin.xxljob
;
package
com.youlai.system.
config
;
import
com.xxl.job.core.executor.impl.XxlJobSpringExecutor
;
import
lombok.extern.slf4j.Slf4j
;
...
...
src/main/java/com/youlai/system/controller/WebsocketController.java
浏览文件 @
cd4f14e6
package
com.youlai.system.controller
;
import
com.youlai.system.model.dto.
Socke
tMessage
;
import
com.youlai.system.model.dto.
Cha
tMessage
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.messaging.handler.annotation.DestinationVariable
;
...
...
@@ -48,11 +48,14 @@ public class WebsocketController {
* @param message 消息内容
*/
@MessageMapping
(
"/sendToUser/{username}"
)
//@SendToUser(value = "/queue/greeting")
public
void
sendToUser
(
Principal
principal
,
@DestinationVariable
String
username
,
String
message
)
{
log
.
info
(
"sender:{};receiver:{}"
,
principal
.
getName
(),
username
);
messagingTemplate
.
convertAndSendToUser
(
username
,
"/queue/greeting"
,
new
SocketMessage
(
principal
.
getName
(),
message
));
/// return "Hello, " + message;
String
sender
=
principal
.
getName
();
// 发送人
String
receiver
=
username
;
// 接收人
log
.
info
(
"发送人:{}; 接收人:{}"
,
sender
,
receiver
);
// 发送消息给指定用户 /user/{username}/queue/greeting
messagingTemplate
.
convertAndSendToUser
(
receiver
,
"/queue/greeting"
,
new
ChatMessage
(
sender
,
message
));
}
}
src/main/java/com/youlai/system/
base/mybatisplu
s/annotation/DataPermission.java
→
src/main/java/com/youlai/system/
core/mybati
s/annotation/DataPermission.java
浏览文件 @
cd4f14e6
package
com.youlai.system.
base.mybatisplu
s.annotation
;
package
com.youlai.system.
core.mybati
s.annotation
;
import
java.lang.annotation.*
;
...
...
src/main/java/com/youlai/system/
base/mybatisplu
s/handler/MyDataPermissionHandler.java
→
src/main/java/com/youlai/system/
core/mybati
s/handler/MyDataPermissionHandler.java
浏览文件 @
cd4f14e6
package
com.youlai.system.
base.mybatisplu
s.handler
;
package
com.youlai.system.
core.mybati
s.handler
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.toolkit.StringPool
;
import
com.baomidou.mybatisplus.extension.plugins.handler.DataPermissionHandler
;
import
com.youlai.system.
base.mybatisplu
s.annotation.DataPermission
;
import
com.youlai.system.
core.mybati
s.annotation.DataPermission
;
import
com.youlai.system.common.base.IBaseEnum
;
import
com.youlai.system.common.enums.DataScopeEnum
;
import
com.youlai.system.common.util.SecurityUtils
;
...
...
src/main/java/com/youlai/system/
base/mybatisplu
s/handler/MyMetaObjectHandler.java
→
src/main/java/com/youlai/system/
core/mybati
s/handler/MyMetaObjectHandler.java
浏览文件 @
cd4f14e6
package
com.youlai.system.
base.mybatisplu
s.handler
;
package
com.youlai.system.
core.mybati
s.handler
;
import
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
;
import
org.apache.ibatis.reflection.MetaObject
;
...
...
src/main/java/com/youlai/system/
bas
e/security/exception/MyAccessDeniedHandler.java
→
src/main/java/com/youlai/system/
cor
e/security/exception/MyAccessDeniedHandler.java
浏览文件 @
cd4f14e6
package
com.youlai.system.
bas
e.security.exception
;
package
com.youlai.system.
cor
e.security.exception
;
import
com.youlai.system.common.result.ResultCode
;
import
com.youlai.system.common.util.ResponseUtils
;
...
...
src/main/java/com/youlai/system/
bas
e/security/exception/MyAuthenticationEntryPoint.java
→
src/main/java/com/youlai/system/
cor
e/security/exception/MyAuthenticationEntryPoint.java
浏览文件 @
cd4f14e6
package
com.youlai.system.
bas
e.security.exception
;
package
com.youlai.system.
cor
e.security.exception
;
import
com.youlai.system.common.result.ResultCode
;
import
com.youlai.system.common.util.ResponseUtils
;
...
...
src/main/java/com/youlai/system/
bas
e/security/jwt/JwtTokenFilter.java
→
src/main/java/com/youlai/system/
cor
e/security/jwt/JwtTokenFilter.java
浏览文件 @
cd4f14e6
package
com.youlai.system.
bas
e.security.jwt
;
package
com.youlai.system.
cor
e.security.jwt
;
import
com.youlai.system.common.result.ResultCode
;
import
com.youlai.system.common.util.ResponseUtils
;
...
...
src/main/java/com/youlai/system/
bas
e/security/jwt/JwtTokenProvider.java
→
src/main/java/com/youlai/system/
cor
e/security/jwt/JwtTokenProvider.java
浏览文件 @
cd4f14e6
package
com.youlai.system.
bas
e.security.jwt
;
package
com.youlai.system.
cor
e.security.jwt
;
import
cn.hutool.core.convert.Convert
;
import
com.youlai.system.common.constant.JwtClaimConstants
;
import
com.youlai.system.
bas
e.security.model.SysUserDetails
;
import
com.youlai.system.
cor
e.security.model.SysUserDetails
;
import
io.jsonwebtoken.Claims
;
import
io.jsonwebtoken.Jwts
;
import
io.jsonwebtoken.SignatureAlgorithm
;
...
...
src/main/java/com/youlai/system/
bas
e/security/model/SysUserDetails.java
→
src/main/java/com/youlai/system/
cor
e/security/model/SysUserDetails.java
浏览文件 @
cd4f14e6
package
com.youlai.system.
bas
e.security.model
;
package
com.youlai.system.
cor
e.security.model
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.util.ObjectUtil
;
...
...
src/main/java/com/youlai/system/
bas
e/security/service/PermissionService.java
→
src/main/java/com/youlai/system/
cor
e/security/service/PermissionService.java
浏览文件 @
cd4f14e6
package
com.youlai.system.
bas
e.security.service
;
package
com.youlai.system.
cor
e.security.service
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.util.StrUtil
;
...
...
src/main/java/com/youlai/system/
bas
e/security/service/SysUserDetailsService.java
→
src/main/java/com/youlai/system/
cor
e/security/service/SysUserDetailsService.java
浏览文件 @
cd4f14e6
package
com.youlai.system.
bas
e.security.service
;
package
com.youlai.system.
cor
e.security.service
;
import
com.youlai.system.
bas
e.security.model.SysUserDetails
;
import
com.youlai.system.
cor
e.security.model.SysUserDetails
;
import
com.youlai.system.model.dto.UserAuthInfo
;
import
com.youlai.system.service.SysUserService
;
import
lombok.RequiredArgsConstructor
;
...
...
src/main/java/com/youlai/system/mapper/SysDeptMapper.java
浏览文件 @
cd4f14e6
...
...
@@ -3,7 +3,7 @@ package com.youlai.system.mapper;
import
com.baomidou.mybatisplus.core.conditions.Wrapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.toolkit.Constants
;
import
com.youlai.system.
base.mybatisplu
s.annotation.DataPermission
;
import
com.youlai.system.
core.mybati
s.annotation.DataPermission
;
import
com.youlai.system.model.entity.SysDept
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
...
...
src/main/java/com/youlai/system/mapper/SysUserMapper.java
浏览文件 @
cd4f14e6
...
...
@@ -2,7 +2,7 @@ package com.youlai.system.mapper;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.youlai.system.
base.mybatisplu
s.annotation.DataPermission
;
import
com.youlai.system.
core.mybati
s.annotation.DataPermission
;
import
com.youlai.system.model.bo.UserBO
;
import
com.youlai.system.model.entity.SysUser
;
import
com.youlai.system.model.dto.UserAuthInfo
;
...
...
src/main/java/com/youlai/system/model/dto/
Socke
tMessage.java
→
src/main/java/com/youlai/system/model/dto/
Cha
tMessage.java
浏览文件 @
cd4f14e6
...
...
@@ -10,7 +10,7 @@ import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public
class
Socke
tMessage
{
public
class
Cha
tMessage
{
/**
* 发送者
...
...
src/main/java/com/youlai/system/plugin/dupsubmit/aspect/DuplicateSubmitAspect.java
浏览文件 @
cd4f14e6
...
...
@@ -4,7 +4,7 @@ import cn.hutool.core.util.StrUtil;
import
com.youlai.system.plugin.dupsubmit.annotation.PreventDuplicateSubmit
;
import
com.youlai.system.common.result.ResultCode
;
import
com.youlai.system.common.exception.BusinessException
;
import
com.youlai.system.
bas
e.security.jwt.JwtTokenProvider
;
import
com.youlai.system.
cor
e.security.jwt.JwtTokenProvider
;
import
jakarta.servlet.http.HttpServletRequest
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
...
...
src/main/java/com/youlai/system/plugin/websocket/WebsocketChannelInterceptor.java
已删除
100644 → 0
浏览文件 @
28646fdf
package
com.youlai.system.plugin.websocket
;
import
cn.hutool.core.util.StrUtil
;
import
com.youlai.system.base.security.jwt.JwtTokenProvider
;
import
lombok.RequiredArgsConstructor
;
import
org.springframework.messaging.Message
;
import
org.springframework.messaging.MessageChannel
;
import
org.springframework.messaging.simp.stomp.StompCommand
;
import
org.springframework.messaging.simp.stomp.StompHeaderAccessor
;
import
org.springframework.messaging.support.ChannelInterceptor
;
import
org.springframework.messaging.support.MessageHeaderAccessor
;
import
org.springframework.stereotype.Component
;
import
java.security.Principal
;
/**
* Websocket 连接认证拦截器
*
* @author haoxr
* @since 2.4.0
*/
@Component
@RequiredArgsConstructor
public
class
WebsocketChannelInterceptor
implements
ChannelInterceptor
{
private
final
JwtTokenProvider
jwtTokenProvider
;
/**
* 连接前监听
*
* @param message 消息
* @param channel 通道
* @return
*/
@Override
public
Message
<?>
preSend
(
Message
<?>
message
,
MessageChannel
channel
)
{
StompHeaderAccessor
accessor
=
MessageHeaderAccessor
.
getAccessor
(
message
,
StompHeaderAccessor
.
class
);
assert
accessor
!=
null
;
if
(
StompCommand
.
CONNECT
.
equals
(
accessor
.
getCommand
()))
{
String
bearerToken
=
accessor
.
getFirstNativeHeader
(
"Authorization"
);
if
(
StrUtil
.
isNotBlank
(
bearerToken
))
{
bearerToken
=
bearerToken
.
substring
(
7
);
// remove "Bearer "
String
username
=
jwtTokenProvider
.
getUsername
(
bearerToken
);
if
(
StrUtil
.
isNotBlank
(
username
))
{
Principal
principal
=
()
->
username
;
accessor
.
setUser
(
principal
);
return
message
;
}
}
}
return
ChannelInterceptor
.
super
.
preSend
(
message
,
channel
);
}
}
src/main/java/com/youlai/system/service/impl/AuthServiceImpl.java
浏览文件 @
cd4f14e6
package
com.youlai.system.service.impl
;
import
cn.hutool.captcha.AbstractCaptcha
;
import
cn.hutool.core.util.IdUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.youlai.system.common.constant.CacheConstants
;
import
com.youlai.system.
bas
e.security.jwt.JwtTokenProvider
;
import
com.youlai.system.
cor
e.security.jwt.JwtTokenProvider
;
import
com.youlai.system.model.dto.CaptchaResult
;
import
com.youlai.system.model.dto.LoginResult
;
import
com.youlai.system.plugin.captcha.CaptchaGenerator
;
...
...
src/main/java/com/youlai/system/service/impl/SysRoleServiceImpl.java
浏览文件 @
cd4f14e6
...
...
@@ -10,7 +10,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import
com.youlai.system.common.constant.SystemConstants
;
import
com.youlai.system.common.model.Option
;
import
com.youlai.system.converter.RoleConverter
;
import
com.youlai.system.
bas
e.security.service.PermissionService
;
import
com.youlai.system.
cor
e.security.service.PermissionService
;
import
com.youlai.system.mapper.SysRoleMapper
;
import
com.youlai.system.model.entity.SysRole
;
import
com.youlai.system.model.entity.SysRoleMenu
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录