我正在使用nodejs和angular-cli构建应用程序 我使用JsonWebToken来验证用户帐户。但它总是返回Unauthorized 401。 这是我的代码:
//认证代码
S=[3,2,1,1]
// GET PROFILE
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.toJSON(), config.secret, {
expiresIn: 604800 // 1 week
});
res.json({
success: true,
token: 'JWT '+token,
//token:token,
user: {
id: user._id,
name: user.name,
username: user.username,
email: user.email
}
});
} else {
return res.json({success: false, msg: 'Wrong password'});
}
});
});
});
//按用户身份获取用户
router.get('/profile', passport.authenticate('jwt', {session:false}), (req, res, next) => {
res.json({user: req.user});
});
//按用户名
获取用户 module.exports.getUserById=function(id,callback){
User.findById(id,callback);
}
//比较密码
module.exports.getUserByUsername=function(username,callback){
const query={username:username}
User.findOne(query,callback);
}
你能解释一下为什么吗?