Express Passport jwt令牌从服务器获取错误消息

Express Passport jwt令牌从服务器获取错误消息,express,passport.js,passport-local,Express,Passport.js,Passport Local,我根本不知道如何将错误消息从服务器传递到客户端。我搜索了文档,但找不到应该在哪里实现回调函数以返回错误消息 Response {_body: "Unauthorized", status: 401, ok: false, statusText: "Unauthorized", headers: Headers…}headers: Headersok: falsestatus: 401statusText: "Unauthorized"type: 2url: "http://localhost:8

我根本不知道如何将错误消息从服务器传递到客户端。我搜索了文档,但找不到应该在哪里实现回调函数以返回错误消息

Response {_body: "Unauthorized", status: 401, ok: false, statusText: "Unauthorized", headers: Headers…}headers: Headersok: falsestatus: 401statusText: "Unauthorized"type: 2url: "http://localhost:8083/api/auth/login"_body: "Unauthorized"__proto__: Body
我的服务器端代码如下所示:

passport.js

var localLogin = new LocalStrategy(localOptions, function(email, password, done){

User.findOne({
  email: email
 }, function(err, user, info){

if(err){
  return done(err);
}

if(!user){
  return done(null, false, {message: 'User not found'});
}

user.comparePassword(password, function(err, isMatch){

  if(err){
    return done(err);
  }

  if(!isMatch){
    return done(null, false, {message: 'Passwords does not match'});
  }

  return done(null, user);

});

});

});
路由器.js

> var requireAuth = passport.authenticate('jwt', {session: false}),
>     requireLogin = passport.authenticate('local', {session: false});
> 
> module.exports = function(app){
> 
>   var apiRoutes = express.Router(),
>       authRoutes = express.Router(),
>       todoRoutes = express.Router();
> 
>   // Auth Routes   apiRoutes.use('/auth', authRoutes);
> 
>   authRoutes.post('/register', AuthenticationController.register);  
> authRoutes.post('/login', requireLogin, AuthenticationController.login);
在客户端中,我收到此错误消息

Response {_body: "Unauthorized", status: 401, ok: false, statusText: "Unauthorized", headers: Headers…}headers: Headersok: falsestatus: 401statusText: "Unauthorized"type: 2url: "http://localhost:8083/api/auth/login"_body: "Unauthorized"__proto__: Body

done
函数的第一个参数是一个错误,就像我在
if(err)done(err,null)
@nadavvadan中添加任何内容一样。我将收到错误500。目前,我总是向用户显示他的密码或电子邮件是错误的,即使我不知道到底是哪一个这实际上是一个特性!不显示登录失败的原因可以防止
用户枚举
(即让潜在攻击者知道此电子邮件已在您的系统中注册)。基本上,您希望
捕获某个地方的错误,并将错误返回给那里的用户。
done
函数的第一个参数是错误,就像您在
if(err)done(err,null)
@nadavvadan中所做的一样,如果我在那里放了任何东西。我将收到错误500。目前,我总是向用户显示他的密码或电子邮件是错误的,即使我不知道到底是哪一个这实际上是一个特性!不显示登录失败的原因可以防止
用户枚举
(即让潜在攻击者知道此电子邮件已在您的系统中注册)。基本上,您希望
捕获某个地方的错误,并将错误返回给那里的用户。