我使用的是passport-jwt
当我尝试行动时
router.post('/auth', passport.authenticate('jwt', { session: false }), async (req, res, next)
出现这个错误
POST http://localhost:8001/user/auth 401 (Unauthorized)
这是我的代码
(后端/user.js)
router.post('/auth', passport.authenticate('jwt', { session: false }), async (req, res, next) => {
try {
res.json({ result: true });
} catch (error) {
console.error(error);
next(error);
}
});
(护照/index.js)
const passport = require('passport');
const { Strategy: LocalStrategy } = require('passport-local');
const { ExtractJwt, Strategy: JWTStrategy } = require('passport-jwt');
const bcrypt = require('bcrypt');
const User = require('../models/user');
const passportConfig = { usernameField: 'email', passwordField: 'password' };
const passportVerify = async (email, password, done) => {
try {
// console.log("email:::::::::::::::::",email);
const user = await User.findOne({ where: {email} });
if (!user) {
done(null, false, { message: '존재하지 않는 사용자 입니다.' });
return;
}
const compareResult = await bcrypt.compare(password, user.password);
if (compareResult) {
done(null, user);
return;
}
done(null, false, { reason: '올바르지 않은 비밀번호 입니다.' });
} catch (error) {
console.error(error);
done(error);
}
};
const JWTConfig = {
jwtFromRequest: ExtractJwt.fromHeader('authorization'),
secretOrKey: 'jwt-secret-key',
};
const JWTVerify = async (jwtPayload, done) => {
try {
// payload의 id값으로 유저의 데이터 조회
console.log("-----------------------------------------")
const user = await User.findOne({ where: { id: jwtPayload.id } });
// 유저 데이터가 있다면 유저 데이터 객체 전송
if (user) {
done(null, user);
return;
}
// 유저 데이터가 없을 경우 에러 표시
done(null, false, { reason: '올바르지 않은 인증정보 입니다.' });
} catch (error) {
console.error(error);
done(error);
}
};
module.exports = () => {
passport.use('local', new LocalStrategy(passportConfig, passportVerify));
passport.use('jwt', new JWTStrategy(JWTConfig, JWTVerify));
};
如果控制台被记录,我检查了passport/index.js, 这是 console.log("-----------------------------------------") 但控制台未登录。
我不知道穿什么..
如何修复我的代码?