我在我的web应用程序中使用passport.js进行身份验证。我遵循给定here的示例,即以下代码:
app.get('/api/me',
passport.authenticate('bearer', { session: false }),
function(req, res) {
res.json(req.user);
});现在,问题是只有使用正确的access_token才能调用function(req, res)中的代码。如果登录错误,该函数将永远不会被调用,它只会返回“未授权”。有没有办法执行这个函数呢?例如,如下所示:
app.get('/api/me',
passport.authenticate('bearer', { session: false }),
function(req, res) {
if(req.user){
res.json(req.user);
} else {
res.json({ error: 'whatever' })
}
});here是我的代码中的一部分。
发布于 2014-07-30 16:02:49
在Passport's authenticate page中,authenticate方法接受一个可选的自定义回调函数作为其第三个参数。
我还没有尝试过Bearer策略,但我认为它不会有什么不同。但请记住,如果您使用此回调函数,则必须使用res.logIn()自己处理login过程
所以
app.get('/api/me',
passport.authenticate('bearer', { session: false },
function(err, user,info) {
if (err) { return next(err); } // If there's an error the process
if (!user) { return res.json({ error: 'user not found' }) } // If the user's not found
req.logIn(user, function(err) { // User exists !
if (err) { return next(err); }
return res.json(req.user);
});
});
);这对你有帮助吗?
https://stackoverflow.com/questions/25028809
复制相似问题