php node.js redis session share认证

我只是使用php和node.js,搜索后我发现只有用户身份验证的方式</ p> \ n

首先我将我的php会话保存浴池更改为redis </ p>

这是我的插入会话代码</ p>


session_name(“userID”); </ p>

session_start(); </ p>

$ _ SESSION [“username”] =“hello world”; </ p>
</ blockquote>

这是redis的图像,它显示会话</ p>



这里是我的浏览器cookie </ p>

</ p>

我只想对会话进行身份验证 node.js所以如果用户登录php ...
node.js将数据发送给用户,拒绝用户...或者通过node.js从mysql发送数据</ p>

所以这里我构建 node.js服务器</ p>

</ p>

它的所有工作都很好我需要客户端上的套接字和我 发送数据到服务器.. </ p>

每次用户通过套接字发送值我想验证 用户如果用户登录php(在redis中找到会话)向用户发送数据...发送你必须先登录</ p>

我的问题是如何通过node.js检查redis中的会话 </ p>
</ div>

展开原文

原文

i just use php and node.js and after search i found only way for Authentication with user

so first thing i change my php session save bath to redis

and this is my code for insert session

session_name("userID");

session_start();

$_SESSION["username"] = "hello world";

this is image for redis and its show the session

enter image description here and here is my my browser cookie

enter image description here

i just want to Authentication the session on node.js so if user login in php ... node.js send data to user else refuse user ... or send data from mysql by node.js

so here i build node.js server

enter image description here

every thing its work good i require socket on client and i send data to server ..

every time user send value by socket i want to Authentication the user if user login php (session found in redis) send data to user else ... send u must login first

my problem on how to check if the session in redis by node.js

1个回答



您需要查询redis数据库以获取会话信息,具体如下所示</ p>

   // user.js 
</ code> </ pre>

在redis中的appsession哈希映射中添加用户及其会话</ p>

   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)
{
回调(错误,真);
}
其他
{
回调(错误,假);
}
});
};
</ 代码> </ pre>

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

  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){
//如果会话被取消,则执行其他处理
}
});
< / code> </ pre>

希望有所帮助。</ p>
</ div>

展开原文

原文

You need to query your redis db for the session information, with something like given below

//user.js

Add user and its session in appsession hash map in redis

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

you can then use the same method in your code to check whether user session is available or not. 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
       }
});

Hope it helps.

drux41001
drux41001 那你需要先建立套接字连接。 您需要检查您的代码。 我已经为您提供了如何在redis会话中存储数据以及如何在redis中检查会话详细信息的说明。 你需要为此做一些研发,虽然我可以为你提供代码
接近 5 年之前 回复
doumi1852
doumi1852 的console.log(数据); 给我一些数据==我发送给服务器的消息
接近 5 年之前 回复
dounao1875
dounao1875 它给我错误这个客户端socket.emit(“选择器”,“给我一些数据”); 并在服务器上io.sockets.on('connection',function(socket){socket.on(“selector”,function(data){sessionID = data.handshake.session; USERNAME = socket.username; session.validateUserSession(redisClient) ,USERNAME,sessionID,function(err,response){//如果会话被取消,则进行其他处理});});}); sessionID = data.handshake.session; TypeError:无法读取未定义的属性“session” -
接近 5 年之前 回复
dongping2023
dongping2023 您已在代码中使用了data.handshake.session。 您需要检查存储会话中的会话ID。 你得到sessionId,你可以使用给定的代码。
接近 5 年之前 回复
drzb7969753
drzb7969753 sessionID = data.handshake.session; TypeError:无法读取未定义的属性“session”
接近 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐