当前位置: 首页 > news >正文

公共法律知识培训网站网站群 米拓

公共法律知识培训网站,网站群 米拓,商洛做网站,辽宁省建设工程信息网网1.遇到问题 公司项目是基于ruoyi 框架快速搭建开发,使用多线程搜索查询,所以以用户区分任务,保证可以搜索任务和取消搜索,所以我这需要获得用户id,使用 SecurityUtils 共工工具类从请求头获取token,然后解…

1.遇到问题 

        公司项目是基于ruoyi 框架快速搭建开发,使用多线程搜索查询,所以以用户区分任务,保证可以搜索任务和取消搜索,所以我这需要获得用户id,使用 SecurityUtils 共工工具类从请求头获取token,然后解析得到用户基本信息和权限。在开发的过程中正常使用,建立socket连接也正常,但是在后续发消息的时候,在后续将代码移动websocket 出现获取用户ID 异常的错误,其实在获取 loginUser 是空的。

/*** 安全服务工具类* * @author trinity*/
public class SecurityUtils
{/*** 用户ID**/public static Long getUserId(){try{return getLoginUser().getUserId();}catch (Exception e){throw new ServiceException("获取用户ID异常", HttpStatus.UNAUTHORIZED);}}

  2.解决思路

        1.同事告诉我可以采用另外一种方式,建立连接的时候将让前端传过来,让后将userId和session存放一起,以下代码就可以实现。

@Slf4j
@Component
@ServerEndpoint(value = "/websocket/{userid}")
public class SearchSocketServer {@OnOpenpublic void onOpen(Session session, @PathParam("userid") String userid) {log.info("WebSocket connection opened for userid: {}", userid);// 处理其他逻辑...}
}

        上面是基于注解开发,实现起来的简单。我也问了前端同事是否可以我传用户id,回答也是是。我这人就是最求代码高bi格,就使用下面了这种

        实现 HandshakeInterceptor 接口 就能在 websocket 三次握手 四次挥手 (至于websocket用的什么不清楚),因为socket 建立其实发消息其实就不会发请求了,也就是我在代码中获取不到用户id的问题所在。所以我只要在建立socket 请求时获取用户id 写到请求头里后面就可以无限使用了。不知道还有没有更好的方式

/*** @author LJL* @version 1.0* @title IdHandshakeInterceptor* @date 2023/8/25 9:18* @description TODO*/
public class IdHandshakeInterceptor  implements HandshakeInterceptor {@Overridepublic boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception {// 从外部请求中获取id,并设置到WebSocket的属性中Long uid = SecurityUtils.getUserId();attributes.put("uid", uid);return true;}@Overridepublic void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) {// 握手完成后的处理逻辑(可选)}
}

        实现了拦截器别忘记添加进去 

@Configuration
@EnableWebSocket
public class SpringSocketConfig implements WebSocketConfigurer {@Autowiredprivate SpringSocketHandle springSocketHandle;@Autowiredprivate SpringAbstractWebSocketHandler springAbstractWebSocketHandler;@Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {registry.addHandler(springSocketHandle, "/spring-ws").setAllowedOrigins("*").addHandler(springAbstractWebSocketHandler, "/spring-ws1").addInterceptors(new IdHandshakeInterceptor()).setAllowedOrigins("*");}
http://www.yayakq.cn/news/894590/

相关文章:

  • 网页设计与网站建设作业微信企业邮箱怎么注册
  • 大学网站建设的意义如皋做网站的
  • 武进做网站做零售去哪个外贸网站
  • 文登城乡建设局网站成都高端网页设计公司
  • 微信公众号托管代运营潍坊百度快速排名优化
  • 贵州网站制作公司电话四字顺口名字公司
  • 网站主页设计优点wordpress 大数据量查询
  • 用dw做网站首页网站搭建工作怎么样
  • 网站服务器重做系统怎么做青海风控平台app
  • 网站建设绿茶进销存系统
  • 做商品网站需要营业执照外贸网站建设及推广
  • 银川网站建设0951网站开发需要客户做什么
  • 外贸建站平台免费建站有哪些
  • 浏览器显示不安全网站建设网站设计制作费用多少
  • 十三师建设局网站网络优化有哪些主要流程
  • 苏州做网站哪家比较好详情页在线设计网站推荐
  • 空间设计和室内设计的区别中国网站优化哪家好
  • 深圳市seo网站设计哪家好重庆本地生活网
  • 做网站要买什么广东省自然资源厅吴鋆
  • 手机网站如何做营销安卓程序开发用什么语言
  • 外贸展示型网站建设wordpress换主图之后图片不显示
  • 网站建设 开题报告ajax ie8 wordpress
  • 模板建站3000是不是贵了网络营销策划方案15篇要求
  • 静态网站 服务器云浮新兴哪有做网站的
  • 南川区 网站集约化建设方案如何制作数据库网站
  • 学校网站建设模板冠县做网站哪里好
  • 海口网站开发制作软文推广套餐
  • 住房和城乡建设部官方网站办事大厅无代码开发平台排名
  • 最新网站源码下载有什么好的手机推荐网站
  • 湖南鸿泰电力建设有限公司网站logo设计公司排行榜