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。目前,我总是向用户显示他的密码或电子邮件是错误的,即使我不知道到底是哪一个这实际上是一个特性!不显示登录失败的原因可以防止用户枚举
(即让潜在攻击者知道此电子邮件已在您的系统中注册)。基本上,您希望捕获某个地方的错误,并将错误返回给那里的用户。