2017-03-18 21 views
0

解析CodeIgniter的會話數據提出,存儲以下陣列到會話一個簡單的登錄功能:從Redis的

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

而我想的授權用戶能夠能夠聊到下面的聊天頁面這被通過笨服務:

<?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> 

正如你可以看到它使用了一個socker.io Node.js的服務器偵聽進港3000上,但我希望把一些認證到socket.io服務器爲了不能夠讓未經授權的用戶使用第三方應用程序。

正如我注意到,只要websocket使用相同的域codeigniter的cookie傳遞到node.js的socket.io。所以我認爲我需要一箇中間件才能從redis獲取coceigniters會話數據。

所以首先我想對得到的數據是如何存儲Redis的服務器上,所以我通過redis-cli --scan --pattern '*'命令連接,我得到了以下結果一看:

ci_session:uipchhk7lfc5vmodndljquqsbs2ru02d 
ci_session:gvmio1esujbscbh8847olbn4hkg5897n 
ci_session:iejok3chmv025keh5g52lj3lps701umj 

,但他們似乎不任何有用的形式。所以我想知道:

上面這些數據是什麼? 我將如何從node.js應用程序獲取我想要的會話信息?

回答

0

如果你做了進一步的檢查與下面的命令(你給控制檯redis-cli後):

get ^one of the keys shown^ 

EG。

get ci_session:uipchhk7lfc5vmodndljquqsbs2ru02d 

您將獲得會話數據。