php node.js redis session share身份验证

时间:2015-10-23 08:43:39

标签: javascript php node.js session redis

我只使用php和node.js,搜索后我发现只有用户身份验证的方式

所以我首先将我的php会话保存浴池更改为redis

这是我的插入会话代码

  

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

     

在session_start();

     

$ _ SESSION [“username”] =“你好世界”;

这是redis的图像,它显示会话

enter image description here 这是我的浏览器cookie

enter image description here

我只想在node.js上验证会话,以便用户在php中登录... node.js将数据发送给用户,拒绝用户...或者通过node.js从mysql发送数据

所以这里我构建了node.js服务器

enter image description here

它的所有功能都很好我需要在客户端上使用套接字并将数据发送到服务器..

每次用户通过套接字发送值我想要验证用户如果用户登录php(在redis中找到会话)将数据发送给用户其他...发送你必须先登录

关于如何通过node.js检查redis会话的问题

1 个答案:

答案 0 :(得分:0)

您需要在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);
            }
    });
};

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

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
       }
});

希望它有所帮助。