gpt4 book ai didi

javascript - 将 Flash 消息与 Angular Routing 结合使用

转载 作者:行者123 更新时间:2023-11-27 23:32:49 25 4
gpt4 key购买 nike

我正在使用 MEAN 堆栈和 Passportjs 构建一个简单的 SPA 进行身份验证,用户可以在其中创建、查看和回答民意调查。页面路由是通过 Angular 和 $routeProvider 完成的。用于创建/管理民意调查的 API 调用以及注册/登录调用是通过快速路由完成的。一切正常,我可以创建一个用户,也可以登录,但现在登录或注册失败时, Passport 生成的闪烁消息出现问题。

我正在将消息分配给 Passport.js 文件中的 req.flash,但我找不到如何将这些消息发送给客户端以及如何接收和显示它们。我发现的所有示例和问答都专门使用快速路由和模板作为 ejs。我对它们没有任何反对意见,但如果可能的话我宁愿不使用它们。

这里有一些片段:

当注册函数发现电子邮件已存在时,返回语句:

return done(null, false, req.flash('signupMessage', 'That email is already taken.'));

通过 Express 进行注册路由。重定向工作正常,我可以看到数据库中的用户:

app.post('/signup', passport.authenticate('local-signup', {
successRedirect : '/',
failureRedirect : '/signup',
failureFlash: true
}));

如果我只使用快速路由并且使用 ejs,我可以实现这个片段 - 但我宁愿不这样做。问题是:有什么替代方案?如何将req.flash中设置的消息发送给客户端以及如何检索它们?

app.get('/signup', function(req, res) {
// render the page and pass in any flash data if it exists
res.render('signup.ejs', { message: req.flash('signupMessage') });
});

最佳答案

我在这里找到了问题的解决方案:How to combine passport and angular-ui routing

我只需要更改快速路由:

app.post('/signup', passport.authenticate('local-signup', {
successRedirect : '/',
failureRedirect : '/signup',
failureFlash: true
}));

对此:

 // Express Route with passport authentication and custom callback
app.post('/api/login', function(req, res, next) {
passport.authenticate('local-login', function(err, user, info) {
if (err) {
return next(err);
}
if (user === false) {
res.status(401).send(req.flash('signupMessage'));
} else {
res.status(200).send("success!");
}
})(req, res, next);
});

这样我就能收到一些返回给客户的信息。

关于javascript - 将 Flash 消息与 Angular Routing 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34397044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com