Max*_*ari 4 jquery node.js http-status-code-401 express passport.js
目前我可以通过以下方式访问done(null, user, {message: 'ok'})
内部帖子请求中设置的消息req.authInfo
:
app.post('/reg', passport.authenticate('local-reg', { session: false }), function (req, res) {
console.log(req.authInfo.message); --> 'ok'
});
Run Code Online (Sandbox Code Playgroud)
哪个非常有用.
但是我怎样才能done(null, false, {message: 'username taken'})
以相同的方式访问这样的消息,因为看来传入done(null, false)
passport.authenticate会使401无法通过,因此不会转发到路由处理程序本身.
也许我误会了什么?
PS:我正在发帖jQuery.post
.
您应该在可访问的地方使用自定义回调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);
});
Run Code Online (Sandbox Code Playgroud)
req.authInfo
成功登录后才会设置.如果您正在使用会话,则可以使用带有重定向的Flash消息,例如:
app.post('/reg', passport.authenticate('local-reg', {
successRedirect: '/',
failureRedirect: '/',
failureFlash: true,
successFlash: true
}));
app.get('/', function(req, res) {
res.json(req.flash());
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1872 次 |
最近记录: |