2014-11-04 105 views
1

編輯:的解決方案提出in this answer是實現這一目標的正確方法:Express.js:是否可以像res.render一樣將對象傳遞給重定向?

論節點get請求我可以這樣做:

app.get('/', function(req, res) { 
    res.render('index.ejs', { 
     message: 'test' 
    }); 
}); 

而且爲了設置郵件發送對象與請求一起。我怎樣才能做同樣的重定向:

即是這樣的:

function testSend(req, res) { 

    mess = {message: 'test two'}; 
    res.redirect('/', mess); 
    //Won't pass to the "get" 
} 
+0

[重定向中明示,傳遞一些上下文]的可能重複(HTTP傳遞URL

res.redirect('/my-url/?param1=value1&param2=value2') 

像PARAMS數據:/ /stackoverflow.com/questions/19035373/redirecting-in-express-passing-some-context) – Philibobby 2014-11-04 23:34:06

+0

你能澄清你的目標嗎?你是否希望將該對象('mess')作爲JSON發送給301 HTTP響應正文中的客戶端? – mattr 2014-11-04 23:36:43

+0

我的目標是傳遞''消息',例如''請先登錄'',然後在我的視圖中渲染。 – Startec 2014-11-04 23:39:04

回答

1

另一個解決方案是使用express sessions

當你初始化你的應用程序:

var session = require('express-session'); 
app.use(session({secret: 'mySecret', resave: false, saveUninitialized: false})); 
//configure the options however you need them, obviously 

您的重定向功能:

function testSend(req, res) { 
    req.session.message = 'please login first'; //or whatever 
    res.redirect('/'); 
}); 

而在你的路由器:

app.get('/', function(req, res) { 
    var message = req.session.message; 
    res.render('index.ejs', {message: message}); 
}); 

這種安全讓你的信息在服務器端,如果它包含敏感數據。

0

可以使用會話像@Jeremy,或者在控制器

req.query.param1 
req.query.param2 
相關問題