分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

使用nodejs创建加入用户验证的websocket服务

发布时间:2023-09-06 01:41责任编辑:苏小强关键词:jsnodejswebsocket

使用nodejs创建websocket服务是非常简单的(”ws”模块等),网上教程也很多。websocket服务默认没有连接验证,再加上它支持跨域连接,这样就存在“盗连”和并发攻击的风险。

nodejs的”ws”模块提供了一个verifyClient回调方法,可以在客户端连接时,获取到连接信息如url等。这样我们就可以在连接url中加入自己的验证信息(用户名、密码等)。直接上代码:

************************************************************

后端:MyWs.js

var util = require(‘util‘);

var url = require(‘url‘);

var server = require(‘ws‘).Server;

var wss = new server({ port: 8181, verifyClient: ClientVerify });

wss.on(‘connection‘, function (ws) {

    console.log(‘client connected‘);

    ws.on(‘message‘, function (message) {

        ws.send("message received!");

    });

    ws.on(‘close‘, function (close) {

        console.log("client closed");

    });

});

//验证函数

function ClientVerify(info) {

    var ret = false;//拒绝

    var params = url.parse(info.req.url, true).query;

    if (params["id"] == "luoc83" && params["key"] == "123456") {

        ret = true;//通过

    }

    return ret;  

}

************************************************************

前端:MyWs.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

    <script type="text/javascript" language="javascript">

        var ws;

              var user = "luoc83";

              var psw="12345";//现在是错误密码,正确的是“123456”

        function Connect() {

            ws = new WebSocket("ws://localhost:8181?id="+user+"&key="+psw);

            ws.onopen = function (e) {

                            alert("connect success");

            }

            ws.onclose = function () {

                alert("close");

            }

            ws.onerror = function (e) {

                alert("connect error!");

            };

            ws.onmessage = function (event) {

                alert(event.data);

            };

        }

    </script>

</head>

<body >

<button onclick="Connect()">测试</button>

</body>

</html>

************************************************************

测试步骤:

1)启动后端服务:node MyWs.js

2)在浏览器打开MyWs.htm,点击“测试按钮”,弹出提示: "connect error!" 和 “close”

按“F12”可以看到提示信息:

WebSocket connection to ‘ws://localhost:8181/?id=luoc831&key=123456‘ failed: HTTP Authentication failed; no valid credentials available

描述得很清楚:验证失败

3)修改MyWs.htm中 var psw="12345" 为 var psw="123456",保存,在浏览器打开,点击“测试按钮”,弹出提示"connect success",说明验证成功。

使用nodejs创建加入用户验证的websocket服务

原文地址:https://www.cnblogs.com/luoc83/p/8421663.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved