Spring WebSocket使用token认证连接
来源:互联网 发布:java导出excel详解 编辑:程序博客网 时间:2024/06/05 18:52
后台代码配置:
/** * WebSocket配置 * @author lnkToKing */@Configuration/* * 开启使用STOMP协议来传输基于代理(message broker)的消息 * 启用后控制器支持作用@MessgeMapping注解 */@EnableWebSocketMessageBrokerpublic class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { @Value("${token-secret-key}") private String tokenSecretKey; //注册STOMP协议节点并映射url @Override public void registerStompEndpoints(StompEndpointRegistry registry) { //添加连接节点 registry.addEndpoint("/endpoint").addInterceptors(new HandshakeInterceptor() { /** * websocket握手 */ @Override public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map<String, Object> attributes) throws Exception { ServletServerHttpRequest req = (ServletServerHttpRequest) request; //获取token认证 String token = req.getServletRequest().getParameter("token"); //解析token获取用户信息 Principal user = parseToken(token); if(user == null){ //如果token认证失败user为null,返回false拒绝握手 return false; } //保存认证用户 attributes.put("user", user); return true; } @Override public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) { } }).setHandshakeHandler(new DefaultHandshakeHandler(){ @Override protected Principal determineUser(ServerHttpRequest request, WebSocketHandler wsHandler, Map<String, Object> attributes) { //设置认证用户 return (Principal)attributes.get("user"); } }) .setAllowedOrigins("*") //允许跨域 .withSockJS(); //指定使用SockJS协议 } /** * 根据token认证授权 * @param token */ private Principal parseToken(String token){ //TODO 解析token并获取认证用户信息 return null; }}
前端js连接
var sock = new SockJS('http://localhost:8080/endpoint?token=access_token'); //连接节点var stomp = Stomp.over(sock);stomp.connect({}, function(frame){ //连接成功后订阅消息接口 //订阅消息});
阅读全文
0 0
- Spring WebSocket使用token认证连接
- django使用token认证authenticate
- spring websocket stomp 连接开启了用户名和密码认证的ActiveMQ
- Spring security下csrf token的认证
- Spring websocket ssl和摘要认证
- Spring websocket 使用
- spring+websocket整合使用
- 【spring+websocket的使用】
- Spring Websocket 使用笔记
- spring websocket 使用@SendToUser
- spring websocket 使用@SendToUser
- 使用spring-websocket包搭建websocket服务
- android使用websocket连接服务器
- Spring-WebSocket配置以及使用
- 使用 AngularJS & NodeJS 实现基于 token 的认证应用
- 使用 AngularJS & NodeJS 实现基于 token 的认证应用
- 使用 AngularJS & NodeJS 实现基于 token 的认证应用
- 使用 AngularJS & NodeJS 实现基于 token 的认证
- kettle 从hive中读取数据并写入MongoDB
- SpringAOP拦截Controller,Service实现日志管理(自定义注解的方式)里面的坑之 同一个controller部分方法可以拦截,部分方法拦截不了
- 关于idea的debugger窗口找不到
- linux 中断异常:irq event 61 bogus return value ffffffff
- [Linux]理解用户空间与内核空间
- Spring WebSocket使用token认证连接
- MFC选择文件按钮代码
- 上传图片后显示在前台
- sysu-17B02签到
- FormPanel类的frame属性
- 用jdbc做查询操作时动态拼接参数报SQL语法错误的问题
- Weka上机实验二:调用WEKA包进行kmeans聚类
- svn“Previous operation has not finished; run 'cleanup' if it was interrupted“报错的解决方法
- 求若干个数的平均数并输出123456的二进制和十六进制