gpt4 book ai didi

node.js - 从redis解析codeigniter的session数据

转载 作者:可可西里 更新时间:2023-11-01 11:28:36 25 4
gpt4 key购买 nike

我做了一个简单的登录功能,将以下数组存储到 session 中:

$sessionData=[
'username'=>/*username of the loged in user*/,
'user_id'=>/*user id of the logedin user*/
];

我希望授权用户能够在通过 Codeigniter 提供的以下聊天页面中聊天:

 <?php 
$this->load->helper('url');
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Messaging</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">

<link href="<?=base_url('assets/css/bootstrap/bootstrap.min.css');?>" rel="stylesheet" >

<script src="<?=base_url('assets/js/jquery.min.js')?>"></script>
<script src="<?=base_url('assets/js/bootstrap.min.js')?>"></script>
<script src="<?=base_url('assets/js/socket.io.min.js')?>"></script>
<script>
$(function () {
var socket = io('http://localhost:3000');
$('form').submit(function(e){
e.preventDefault();
socket.emit('chat message', $('#m').val());
$('#m').val('');
});

socket.on('chat message', function(msg){
$('#messages').append($('<div class="col-xs-12">').text(msg));
});
});
</script>
</head>
<body>
<div id="messages" style="max-height:100%" class="container-fluid">

</div>
<div class="container-fluid">
<div class="col-xs-12">
<form action="" class="form-inline bg-success">
<div class="form-group">
<input id="m" type="text" class="form-control" autocomplete="off" />
</div>
<button class="btn btn-primary">Send</button>
</form>
</div>
</div>
</body>

如您所见,它在监听端口 3000 的 node.js 服务器上使用 socker.io。但我想在 socket.io 服务器中添加一些身份验证,以免未经授权的用户无法使用第 3 方应用程序使用它。

正如我注意到的,只要 websocket 使用相同的域,codeigniter 的 cookie 就会在 node.js 的 socket.io 上传递。所以我认为我需要一个中间件以便从 redis 获取 coceigniters session 数据。

所以首先我想看看数据是如何存储在 redis 服务器上的,所以我通过 redis-cli --scan --pattern '*' 命令连接,我得到了结果如下:

ci_session:uipchhk7lfc5vmodndljquqsbs2ru02d
ci_session:gvmio1esujbscbh8847olbn4hkg5897n
ci_session:iejok3chmv025keh5g52lj3lps701umj

但它们似乎没有任何有用的形式。所以我想知道:

上面这些数据是什么?我将如何从 node.js 应用程序中获取我想要的 session 信息?

最佳答案

如果您使用以下命令进行进一步检查(在您向控制台提供 redis-cli 之后):

get ^one of the keys shown^

例如。

get ci_session:uipchhk7lfc5vmodndljquqsbs2ru02d

您将获得 session 数据。

关于node.js - 从redis解析codeigniter的session数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42879414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com