2016-03-12 39 views
3

首先我想說我已經看到有關相關問題的問題,但沒有找到答案。基於環回redis的會話

我想在回送中使用redis進行會話,但req在代碼中不可用。

服務器/ server.js

var redis = require("redis"); 
var session = require('express-session'); 
var redisStore = require('connect-redis')(session); 
var client = redis.createClient(); 

var app = module.exports = loopback(); 

app.use(session({ 
    secret: '0`3VTw;hQ|3/`:95ZYu{0J82O>{}7JC/', 
    // create new redis store. 
    store: new redisStore({ host: 'localhost', port: 6379, client: client,ttl : 260}), 
    saveUninitialized: false, 
    resave: false 
})); 

我要實現對迴應用基於Redis的快遞會議,但我不能找到做沒有寫入整個路由控制器自己的方式。

我目前正在擴展模型並創建remoteMethod(),但無論如何我無法訪問「req」。

這是我TrmptUsers型號代碼(見第3行)

通用/模型/ trmpt-users.js

module.exports = function(TrmptUsers) { 
TrmptUsers.login = function(username, password, cb) { 
    console.log(TrmptUsers.app.session); //i want access to req variable to work with redis here. 
var ursalt = security.gen_salt(username); 
     password = security.decrypt256(password, ursalt); 
     TrmptUsers.findOne({fields:{usrPwd:true,usrAccessToken:true},where:{and:[{usr_username:username}]}},function(err,result){ 
     security.verifyPassword(password, result.usrPwd, function(err, verify) { 
       if (verify) { 
       User.generateVerificationToken(username, cb) 
        cb(null,result.usrAccessToken); 
       } 
       else { 
        cb({status:401,message:"Invalid Username/Password"},null); 
       } 
      }); 
     }); 
    } 
    TrmptUsers.remoteMethod(
     'login', 
     { 
      accepts: [ 
      {arg: 'username', type: 'string', required: 'true'}, 
      {arg: 'password', type: 'string', required: 'true'}, 
      ], 
      returns: {arg: 'accesstoken', type: 'string'} 
     } 
    ); 
}; 
+0

你的問題是什麼? –

+0

重新檢查問題@SergeyYarotskiy –

回答

7

我找到了解決我的所有問題上面長前一段時間,因爲有人投了票,我想他們可能想要一個答案,所以我在這裏張貼一個。

服務器/ server.js

var redis = require("redis"); 
var session = require('express-session'); 
var redisStore = require('connect-redis')(session); 
app.use(session({ 
    secret: 'hello', 
    store: new redisStore({ host: 'localhost', port: 6379, client: client,ttl : 3600}),//1 hour 
    saveUninitialized: false, 
    resave: false 
})); 

那麼當您創建模型slc:loopback model你會得到一個選項來REQ對象添加到您的參數。

模型specific.json

... 
"methods": { 
    "userLogin": { 
     "isStatic": true, 
     "accepts": [ 
     { 
      "arg": "req", 
      "type": "object", 
      "required": true, 
      "description": "", 
      "http": { 
      "source": "req" 
      } 
     }, 
     { 
      "arg": "username", 
      "type": "string", 
      "required": true, 
      "description": "Username" 
     }, 
     { 
      "arg": "password", 
      "type": "string", 
      "required": true, 
      "description": "Password" 
     } 
     ], 
     "returns": [ 
     { 
      "arg": "accessToken", 
      "type": "string", 
      "root": false, 
      "description": "" 
     } 
     ], 
... 

然後,只需使用req.session在任何你想要的方式,記得先安裝Redis的服務器。