, если пользователь приходит из любого другого источника, тогда просто сделайте
аю веб-приложение, используя nodejs и angular cli. Я использую JWT для аутентификации своей функции входа в систему. Но когда я обрабатываю это выкинуло эту ошибку
Ошибка: ожидаемая «полезная нагрузка» будет простым объектом. at validate (D: \ Mean_Projects \ meanauthapp \ node_modules \ jsonwebtoken \ sign.js: 34: 11) при validatePayload (D: \ Mean_Projects \ meanauthapp \ node_modules \ jsonwebtoken \ sign.js: 56: 10) в Object.module.exports [как знак] (D: \ Mean_Projects \ meanauthapp \ node_modules \ jsonwebtoken \ sign.js: 108: 7) в User.comparePassword (D: \ Mean_Projects \ meanauthapp \ rout \ users.js: 86: 27) в bcrypt.compare (D: \ Mean_Projects \ meanauthapp \ models \ user.js: 53: 9) в D: \ Mean_Projects \ meanauthapp \ node_modules \ bcryptjs \ dist \ bcrypt.js: 297: 21 в D: \ Mean_Projects \ meanauthapp \ node_modules \ bcryptjs \ dist \ bcrypt.js: 1353: 21 в Immediate.next [как _onImmediate] (D: \ Mean_Projects \ meanauthapp \ node_modules \ bcryptjs \ dist \ bcrypt.js: 1233: 21) в runCallback (timers.js: 785: 20 ) в tryOnImmediate (timers.js: 747: 5) в processImmediate [как _immediateCallback] (timers.js: 718: 5)
Вот мой паспортный код
const JwtStrategy= require('passport-jwt').Strategy;
const ExtractJwt=require('passport-jwt').ExtractJwt;
const User= require('../models/user');
const config=require('../config/database');
module.exports=function(passport){
let opts={};
opts.jwtFromRequest=ExtractJwt.fromAuthHeader();
opts.secretOrKey=config.secret;
opts.issuer = 'accounts.examplesoft.com';
opts.audience = 'yoursite.net';
passport.use(new JwtStrategy(opts,(jwt_payload,done)=>{
console.log(jwt_payload);
User.getUserById(jwt_payload._doc._id,(err,user)=>{
if(err){
return done(err,false);
}
if(user){
return done(null,user);
}
else{
return done(null,false);
}
});
}));
}
Мой код для аутентификации и получения профиля
// Authenticate
router.post('/authenticate', (req, res, next) => {
const username = req.body.username;
const password = req.body.password;
User.getUserByUsername(username, (err, user) => {
if(err) throw err;
if(!user){
return res.json({success: false, msg: 'User not found'});
}
User.comparePassword(password, user.password, (err, isMatch) => {
if(err) throw err;
if(isMatch){
const token = jwt.sign(user, config.secret, {
expiresIn: 604800 // 1 week
});
res.json({
success: true,
token: 'JWT '+token,
user: {
id: user._id,
name: user.name,
username: user.username,
email: user.email
}
});
} else {
return res.json({success: false, msg: 'Wrong password'});
}
});
});
});
// Profile
router.get('/profile', passport.authenticate('jwt', {session:false}), (req, res, next) => {
res.json({user: req.user});
});