我正在使用通行证在Express后端进行身份验证和/或授权。我希望用户在登录尝试失败后会收到有用的错误消息,但请继续获取默认的Unauthorized
消息。我不确定我要去哪里错了,或者我错过了什么,并且已经查找了类似的问题,但是似乎没有什么可以指出我正确的方向。
下面是相关的代码段。
护照本地配置
const localOptions = {
usernameField: 'username',
passReqToCallback: true,
};
// Local Strategy Creation
const localLogin = new LocalStrategy(
localOptions,
async (req, username, password, done) => {
try {
const user = await User.findOne({ username });
if (!user)
return done(null, false, {
message: `No user corresponding to ${username} was found`,
});
const isMatch = await user.comparePasswords(password);
if (!isMatch)
return done(null, false, { message: `Incorrect password` });
return done(null, user);
} catch (error) {
return done(error);
}
}
);
登录控制器
export default {
login: async (req, res, next) => {
try {
const { user } = req;
const token = authToken(user);
return res.status(200).json({ token, user });
} catch (error) {
next(error);
}
},
};
登录路线
import express from 'express';
import passport from 'passport';
import { authController } from '../controllers';
import '../services/passport';
const authRouter = express.Router();
const handleLogin = passport.authenticate('local', { session: false });
authRouter.route('/login').post(handleLogin, authController.login);
export default authRouter;