2014-11-04 106 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 
相关问题