gpt4 book ai didi

jquery - passport.js - 401 错误后访问失败消息

转载 作者:搜寻专家 更新时间:2023-10-31 23:04:59 25 4
gpt4 key购买 nike

目前,我可以通过 req.authInfo 访问在 done(null, user, {message: 'ok'}) 中设置的消息,如下所示:

app.post('/reg', passport.authenticate('local-reg', { session: false }), function (req, res) {        
console.log(req.authInfo.message); --> 'ok'
});

这非常有用。
但是我怎样才能以同样的方式访问这样的消息 done(null, false, {message: 'username taken'})/code> in passport.authenticate 使其抛出 401 unathorised,因此不会转发到路由处理程序本身。
也许我误解了什么?

P.S.:我通过 jQuery.post 发帖。

最佳答案

你应该使用 custom callback您可以访问 info 的位置:

app.post('/req', function(req, res, next) {
passport.authenticate('local-reg', {session: false}, function(err, user, info) {
if (err) {
return next(err);
}
if (!user) {
return res.json(info);
}
req.logIn(user, function(err) {
if (err) {
return next(err);
}
return res.json(info);
});
})(req, res, next);
});

req.authInfo 仅在成功登录后设置。如果您使用的是 session ,则可以使用带有重定向的 Flash 消息,例如:

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

app.get('/', function(req, res) {
res.json(req.flash());
});

关于jquery - passport.js - 401 错误后访问失败消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29662886/

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