最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

移动应用中的套接字认证

运维笔记admin11浏览0评论

移动应用中的套接字认证

移动应用中的套接字认证

我想知道如何使用套接字和cordova正确验证用户身份。

目前,发生以下情况:

  1. 用户使用普通的ajax命令注册或登录,发送emailpassword
  2. 我发回一个访问令牌和他们的电子邮件,这些邮件存储在电话上的localstorage中,并作为qisxswpoi存储在redis中
  3. 然后,用户向socket.io服务器发送连接请求,类似于(客户端):

email => accesstoken
  1. 然后我检查后端是否有访问令牌和电子邮件在我的redis服务器中,如果是,我开始监听客户端发送的任何命令(服务器端):

var socket = io('http://192.168.50.3:8080/');
socket.on('connect', function(){
    socket.emit('init', { email: '[email protected]', token: '12ueno1' });
});
  1. 现在通过身份验证,用户可以发送命令,如(客户端):

var io = require('socket.io').listen(8080),
    mongoose = require('mongoose'),
    schema = mongoose.Schema,
    userModel = require('./models/user'),
    lobbyModel = require('./models/lobby'),
    redis = require('redis').createClient();

io.sockets.on('connection', function(socket){
    socket.on('init', function(data){
        // here, we check for an init command which will have an email and access token
        // if it's there, we put the user into a room and let them wait for data
        redis.get(data.email, function(err, reply){
            if(reply === data.token){

                // get into room
                var roomKey = data.email;
                socket.join(roomKey);

                // get user
                var user;
                userModel.findOne({ email: data.email }, function(err, doc){
                    user = doc;
                });

                socket.in(roomKey).on('create_lobby', function(data){
                    // do stuff for creating a lobby and then send back the data
                    io.sockets.in(roomKey).emit('created_lobby', {
                        email: user.email
                    });
                });
            }
        });
    });
});

现在,这很好用,我只是想知道我是否正确地采用它,或者我是否正在创建一个不安全的系统。

回答如下:

相当晚,但我只是遇到了这个问题。

答案是这种方法不安全。

首先,令牌未被验证。

其次,没有超时检查。

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论