快速 - 在用户成功登录后尝试重定向



我显然没有得到一些核心的节点概念。从数据库验证用户后,数据库返回一个对象("pass_to_html")。我想将该对象的结果呈现到使用车把的新页面上。

我从login_handler.js(服务器js进行验证并从数据库中推送和拉取)的缩写代码:

function getTheeToDashboard(pass_to_html){
app.post('/dashboard',function(req,res, next){
res.redirect('/dashboard')
res.render('dashboard', {view: dashboard, trainer_name: pass_to_html.trainer_data.trainer});
})
}

从仪表板.js

router.get('/', function(req, res, next) {
res.render('dashboard')
});

从应用程序.js:

app.use('/dashboard', dashboard);

来自 dashboard.hbs:

<h1> Welcome  {{trainer_name}}! </h1>

我没有收到任何错误,但显然 app.htmlVerb 没有参与。我已经尝试过app.get,app.put和 app.post。

**编辑:安装连接闪存后,这是我修改的设置,但仍然没有快乐。我认为该应用程序会重定向到dashbard页面并显示一条消息,但什么都没有。**

应用.js

var cookieParser = require('cookie-parser');
var session      = require('express-session');
var flash = require('connect-flash-plus');
var app = express();
app.use(session({
secret: 'keyboard cat',
cookie: { maxAge: 60000 },
resave: false,
saveUninitialized: false
}));
app.use(flash());

登录处理程序:

function getTheeToDashboard(pass_to_html){
app.get('/flash',function(req,res){
req.flash('info','Flash is back!')
res.redirect('/dashboard')
})
}

仪表板.js:

router.get('/', function(req, res, next) {
res.render('dashboard',{messages: req.flash('info')})
});

不能在同一请求中同时重定向和呈现新页面。

重定向是对一个请求的响应,并告诉客户端发出另一个请求。

然后,客户端可以发出另一个请求,您向其发送另一个响应。这是一个两步过程。(如果要进行重定向。

您需要在重定向重定向到的目标路由的 GET 处理程序中向模板提供正确的数据,而不是在重定向从中重定向的源路由的 POST 处理程序中

。如果需要,您可以使用connect-flash模块在这两个请求之间传递数据,但也可以在 secind 请求的处理程序中使用会话数据。

看:

  • https://www.npmjs.com/package/connect-flash
  • https://www.npmjs.com/package/connect-flash-plus
  • https://www.npmjs.com/package/connect-flash-light
  • https://www.npmjs.com/package/express-flash
  • https://www.npmjs.com/package/connect-flash-redis

文档中有很好的例子。

最新更新