spring webSocket 拦截

您所在的位置:网站首页 springsecurity拦截websocket spring webSocket 拦截

spring webSocket 拦截

2024-07-11 15:03| 来源: 网络整理| 查看: 265

websocket 在进行通信的时候不会经过 普通的HandlerInterceptor 拦截器

如果要对websocket 请求做拦截处理 要创建专门的websocket 的拦截器HandshakeInterceptor

但是会经过过滤器 因为要进行一次http 握手 这次握手会被过滤器拦截到

这里的一些 http 请求数据的传递也是通过这次握手来传递的 比如session 种的用户数据

/** * webSocket 握手拦截 * 建立websocket 连接 首先会发送一个http 的请求来 建立连接 * 在websocket 里面的session 不是httpsession 所以会丢失用户态信息 */ @Component public class MyWebSocketInterceptor implements HandshakeInterceptor { /** * http握手预处理 * @param request * @param response * @param wsHandler * @param attributes 这个就是相当于 websocket 的session 把数据放到这个里面 在socketHandler 里面的socketSession 就可以拿到 * @return * @throws Exception */ @Override public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map attributes) throws Exception { return true; } @Override public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) { } }

完事把这个拦截器注册到 对应的socket urlpattern上就可以



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3