javascript - php node.js redis session 共享身份验证

标签 javascript php node.js session redis

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

所以首先我将我的 php session save bath 更改为 redis

这是我插入 session 的代码

session_name("userID");

session_start();

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

这是redis的图像,它显示了 session

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

enter image description here

我只想在 node.js 上验证 session ,所以如果用户登录 php ... node.js 向用户发送数据,否则拒绝用户...或者通过 node.js 从 mysql 发送数据

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

enter image description here

一切都很好,我需要客户端上的套接字,我将数据发送到服务器..

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

关于如何通过 node.js 检查 redis 中的 session 的问题

最佳答案

您需要查询您的 redis 数据库以获取 session 信息,如下所示

//user.js

在redis的appsession hash map中添加用户和它的session

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

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

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

希望对您有所帮助。

关于javascript - php node.js redis session 共享身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33298211/

相关文章:

node.js - nodejs neo4j 不访问参数 req.params.x 但接受任何硬编码值

javascript - 创建类来处理元素的点击和其他事件

javascript - 如何将一个 div 保持在另一个动画 div 后面

javascript - 检测浏览器关闭事件

php - 将一个文本字段的数字内容从另一个文本字段中减去并实时显示结果?

javascript - Json 给出 301 永久移动

node.js - 使用 Node js 将 S3 视频转换为音频文件(Lambda 函数)

javascript - 如何让 Socket 只发送给发出请求的客户端?

php - Apache SetEnv 前置 REDIRECT_ 。是什么赋予了?

javascript - 在 Meteor 中使用自动表单将 postId 添加到评论中