Spring Boot 4.3.5 WebSocket 与 jwt 授权聊天。 GenericMessage 中没有目的地

作者:编程家 分类: spring 时间:2025-09-26

WebSocket 是一种在客户端和服务器之间进行实时双向通信的协议。它使得在 Web 应用中实现实时聊天、通知推送等功能变得更加简单和高效。而 Spring Boot 是一个用于创建独立的、基于生产级别的 Spring 应用程序的框架,它提供了大量的功能和特性来简化开发过程。

在 Spring Boot 4.3.5 版本中,引入了对 WebSocket 的支持,使得开发人员可以更加方便地集成 WebSocket 功能到他们的应用程序中。同时,还可以使用 jwt 授权来确保只有经过身份验证的用户可以访问聊天功能。

在使用 Spring Boot WebSocket 与 jwt 授权实现聊天功能时,我们需要考虑如何进行身份验证和授权。一种常见的做法是使用 JSON Web Token (JWT) 来实现授权。JWT 是一种用于安全地传输信息的开放标准,它可以在不同的应用程序和服务之间传递信息,并使用数字签名来验证其真实性。

在聊天应用中,当用户登录后,可以使用他们的凭证来获取一个 JWT。然后,当用户发送消息时,可以在每个消息的头部中添加该 JWT,在服务器端进行验证,确保用户具有发送消息的权限。服务器还可以使用 JWT 中的一些信息来识别发送者,并将消息发送到正确的目标用户。

下面是一个简单的示例代码,演示了如何使用 Spring Boot WebSocket 与 jwt 授权实现聊天功能:

java

@Configuration

@EnableWebSocketMessageBroker

public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

@Override

public void configureMessageBroker(MessageBrokerRegistry config) {

config.enableSimpleBroker("/topic");

config.setApplicationDestinationPrefixes("/app");

}

@Override

public void registerStompEndpoints(StompEndpointRegistry registry) {

registry.addEndpoint("/websocket")

.setAllowedOrigins("*")

.withSockJS();

}

}

@Controller

public class ChatController {

@MessageMapping("/chat.sendMessage")

@SendTo("/topic/public")

public ChatMessage sendMessage(@Payload ChatMessage chatMessage) {

return chatMessage;

}

// 其他方法...

}

public class JwtAuthenticationFilter extends OncePerRequestFilter {

// 验证 JWT 的逻辑...

}

@RestController

@RequestMapping("/api")

public class JwtAuthController {

// 登录和获取 JWT 的逻辑...

}

在上面的代码中,我们首先创建了一个 WebSocketConfig 类,用于配置 WebSocket 的基本参数。然后,我们创建了一个 ChatController 类,用于处理聊天相关的消息。在这个类中,我们定义了一个 sendMessage 方法,用于接收用户发送的消息,并将其广播到所有订阅了 "/topic/public" 目的地的用户。

接下来,我们创建了一个 JwtAuthenticationFilter 类,用于验证 JWT 的有效性。这个过滤器可以在每个请求中进行身份验证,并根据需要拒绝或允许访问。最后,我们创建了一个 JwtAuthController 类,用于处理用户登录和获取 JWT 的逻辑。

使用 Spring Boot WebSocket 与 jwt 授权实现聊天功能

在这个示例中,我们演示了如何使用 Spring Boot WebSocket 与 jwt 授权实现实时聊天功能。通过使用 JWT 进行身份验证和授权,我们可以确保只有经过身份验证的用户可以发送和接收消息。这种方式不仅安全可靠,还能提供更好的用户体验和性能。

Spring Boot WebSocket 与 jwt 授权提供了一种简单而强大的方式来实现实时聊天功能。通过结合这两个功能,我们可以轻松地创建出安全可靠的聊天应用。希望这篇文章对您有所帮助,祝您在使用 Spring Boot 开发聊天应用时取得成功!