当前位置: 首页 > 面试题库 >

Spring Websockets @SendToUser无需登录?

牛枫
2023-03-14
问题内容

我有一个具有websocket功能的简单spring应用程序,到目前为止一切正常。现在,我想使用@SendToUser批注将消息从服​​务器发送到特定客户端。这给了我错误“正在忽略消息,没有可用的主体信息”。我知道我的服务器上没有任何登录信息,因此每个用户都是“匿名的”并且没有委托人(我现在不使用Spring
Security)。但是每个用户都有一个会话ID。是否可以通过某种方式使用会话ID来区分用户?我该如何实现,以便我的用户获得与会话ID相对应的主体?


问题答案:

我认为解决方案可能是避免使用@SendToUser和使用raw SimpMessagingTemplate并将消息发送到您控制的打开会话的目标。

例如。假设您对新的Websocket会话具有某种身份,则可以预订队列名称中具有该标识符的队列:

stomp.subscribe("/queue/chats" + "-" + mycustomidentifier, onmessage);

现在,在Spring Websocket侦听器端,您可以使用SimpMessagingTemplate以下命令定向响应:

@Controller
public class MyController {


    @Autowired
    private SimpMessagingTemplate simpMessagingTemplate;

    @MessageMapping("/chats")
    public void handleChat(@Payload ChatMessage message) {
        this.simpMessagingTemplate.convertAndSend("/queue/chats-" + "mycustomidentifier", "[" + getTimestamp() + "]:" + message.getMessage());
    }
....


 类似资料:
  • 如何通过firebase发送OTP并在不登录的情况下进行验证?与正常情况一样,firebase接收otp并使用PhoneNumber呼叫SigninWithSign,然后登录firebase。我不想用那种方法登录。我只想从firebase获得otp,并验证它是否正确,如果正确,则执行我的自定义操作。提前谢谢。或者,我需要使用otp进行自定义验证。建议我任何其他方法来验证otp是否正确(SMS)。

  • Paypal Express checkout integration能否包括一种不需要客户登录Paypal或创建新Paypal帐户的信用卡支付方式?

  • 我只是按照spring的指示将响应发送回特定用户,而不是广播消息。但最终,无法发送回响应消息。 这是我的js代码: 这是控制器: 这是Spring配置: 请帮忙。谢谢提前。 我已经尝试使用@SendToUser,@SendToUser(/队列/resp)和SimpMessagingTem板以及,完全不能响应消息到浏览器。

  • 我正在我的 SPA 应用程序中实现 Auth0,其中一个要求是拥有一个自定义 UI,这也意味着我无法使用重定向到 Auth0 的通用登录页面。 在阅读了Auth0网站后,我发现了资源所有者授权类型,这似乎解决了我直接使用Auth0 API处理登录的问题。 使用这种授予类型有什么缺点吗??(我读到这不是很推荐,但我想听听关于这一点的意见) 此外,这种资助类型还有其他选择吗??我是说,如果Biz不想要

  • 我正在使用javascript sdk来实现facebook登录。是否可以将用户重定向到完整的登录页面而不是显示弹出窗口?我尝试添加show:'page',但这似乎无济于事。 谢谢

  • 我正在做一个研究项目,我需要在30台设备上安装一个应用程序,所有这些设备都没有谷歌帐户。我需要做的是将应用程序的结果保存在我的谷歌驱动器文件夹中(我有它的id)。目前这是我的登录过程,它要求一个谷歌帐户: 既然我知道我的凭据和我需要工作的目录的ID,有没有办法修改代码并将我的帐户合并到登录过程中,这样我就不需要在设备上配置google帐户?