繁体   English   中英

php node.js redis会话共享身份验证

[英]php node.js redis session share Authentication

我只使用php和node.js,搜索后我发现了与用户身份验证的唯一方法

所以第一件事我改变了我的PHP会话保存浴到Redis

这是我的插入会话代码

会话名称( “用户ID”);

在session_start();

$ _SESSION [“ username”] =“ hello world”;

这是Redis的图像,它显示了会话

在此处输入图片说明 这是我的浏览器cookie

在此处输入图片说明

我只想对node.js上的会话进行身份验证,因此,如果用户在php中登录... node.js将数据发送给用户,否则拒绝用户...或通过node.js从mysql发送数据

所以在这里我建立node.js服务器

在此处输入图片说明

一切正常,我需要客户端上的套接字,然后将数据发送到服务器..

每次用户通过套接字发送值时,如果用户登录php(在redis中找到会话)将数据发送给用户,则我想对用户进行身份验证...发送u必须先登录

我的问题,如何通过node.js检查redis中的会话

您需要在redis数据库中查询会话信息,如下所示

//user.js

在Redis的AppSession哈希图中添加用户及其会话

exports.addUserSession = function (redisClient,userId,sessionId,callback){

      redisClient.hset('appsession',sessionId,userId,function(err,response){
           callback(err,response);
      });
};


exports.validateUserSession = function (redisClient,userId,sessionId,callback){
    redisClient.hget('appsession',sessionId,function(err,response){
            if(response==userId)
            {
                callback(err,true);
            }
            else
            {
                callback(err,false);
            }
    });
};

然后,您可以在代码中使用相同的方法来检查用户会话是否可用。 例如

var session = require(./user.js );
socket.on("selector", function( data) { 
        sessionID = data.handshake.session;
        USERNAME = socket.username;
        session.validateUserSession(redisClient,USERNAME,sessionID,function(err,response){
            // Do other processing if session is valiated
       }
});

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM