Javascript passport jwt错误401(未经授权)如何解决?
我用的是jwt护照 当我试图表演的时候Javascript passport jwt错误401(未经授权)如何解决?,javascript,node.js,passport.js,Javascript,Node.js,Passport.js,我用的是jwt护照 当我试图表演的时候 router.post('/auth', passport.authenticate('jwt', { session: false }), async (req, res, next) 发生此错误 POST http://localhost:8001/user/auth 401 (Unauthorized) 这是我的密码 (backend/user.js) (passport/index.js) 如果控制台被登录,我就签入p
router.post('/auth', passport.authenticate('jwt', { session: false }), async (req, res, next)
发生此错误
POST http://localhost:8001/user/auth 401 (Unauthorized)
这是我的密码
(backend/user.js)
(passport/index.js)
如果控制台被登录,我就签入passport/index.js,
它是console.log(“-----------------------------------------------”)
但是控制台没有被记录
我不知道发生了什么事
如何修复我的代码?您是否在发送post请求时发送了有效的jwt?如果是这样的话,您是否使用正确的标题发送?
router.post('/auth', passport.authenticate('jwt', { session: false }), async (req, res, next) => {
try {
res.json({ result: true });
} catch (error) {
console.error(error);
next(error);
}
});
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));
};