spring-boot - 使用rabbitmq自定义spring websocket安全
问题描述
我正在使用 websocket 使用rabbitmq 像消息代理一样推送通知。在控制器中,我使用 SimpMessageTemplate 通过用户的昵称转换AndSendToUser 消息
@PostMapping("/{nickName}/notification")
public void send(@PathVariable String nickName,
@RequestBody NotificationRes notificationRes) {
messagingTemplate.convertAndSendToUser(nickName, "/exchange/amq.direct/notification", notificationRes);
}
我通过使用 JWT 授权用户并在用户开始连接时将用户设置为 StompHeaderAccessor 进行了一些配置。
Spring 安全消息传递当前转换发送给用户。使用该端点,spring 会将其转换为 /exchange/amq.direct/notification-user{session_id}。而且 rabbitmq 会创建一个自动删除的队列。所以,如果我同时有 100 个连接。它将创建 100 个队列。我想自定义这个流程来创建一个队列,spring 将使用消息头让 spring 可以知道要向其发送消息的用户。
我做了一些关于 UserDestinationResolver 的研究,但我仍然不知道如何让 spring 可以处理 header 而不是像 ...-user {session_id} 这样的 url。@.@。这种情况我该怎么办?
解决方案
推荐阅读
- javascript - 根据javascript中的条件修改现有数组对象
- proxy - react-scripts 代理 http/https 服务器正在加载 web 作为响应
- javascript - 我对 javascript 嵌套的 Promise 有一些问题
- node.js - 将来自 gmail 附件的文件存储在 Firebase 存储中
- python-3.x - 如何使用脚本获取文件
- javascript - props 未定义,尽管状态已更改
- php - 如何从 number_format 函数中删除 PHP 中的美分部分
- google-cloud-platform - JanusGraph 大规模数据摄取
- c# - 为什么有些 NuGet 包 dll 被复制到解决方案的输出目录而有些没有?
- linux - 如何以这样的方式组织 bash 文件,以便我可以使用文件夹来获得更好的结构,以便在“导入...路径”依赖项中使用?