2017-01-16 3 views
0

Я создал веб-приложение MEAN stack, у которого есть опция входа в систему. Для входа пользователя в систему я использовал пакет jsonwebtoken npm. главная проблема здесь, когда пользователь входит в JWT создается и в полезной нагрузке этой лексемы содержат имя пользователя, адрес электронной почты и FULLNAME но при декодировании токен я только получаю имя пользователя и адрес электронной почты полене получаю все поля от полезной нагрузки JWT

здесь jwt.sign функции-

var token=jwt.sign({userid:user.username,email:user.email,fullname:user.fullname},secret,{expiresIn:'24h'}); 

и здесь jwt.verify ме-

jwt.verify(token,secret,function(err,decoded){ 
    if(err){ 
     res.json({success:false,message:"invalid token"}); 
    } else { 
     req.decoded=decoded; 
     next(); 
    } 
}) 

лексема ПРИМЕР-

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOiJuaXRpbi5zYWNoZGV2IiwiZW1haWwiOiJuaXRpbi5zYWNoZGV2QGVtYWlsLmNvbSIsImlhdCI6MTQ4NDU1ODAxMiwiZXhwIjoxNDg0NjQ0NDEyfQ.fWogT-aHJY4Xyc8Ebm4OXPkWD3poaWG3IAAf9VS-q58 

маркер decoded-

{ 
    "userid": "nitin.sachdev", 
    "email": "[email protected]", 
    "iat": 1484558012, 
    "exp": 1484644412 
} 

userSchema -

var UserSchema=new Schema({ 
    fullname:String, 
    username:{type:String,lowercase:true,required:true,unique:true}, 
    password:{type:String,required:true}, 
    email:{type:String,required:true,lowercase:true,unique:true}, 
    contactno:Number, 
    orgname:String 
}); 

ответ

0

я обнаружил ошибку, я забыл ввести FULLNAME в качестве параметра в».Select() 'метод при использовании' .findOne() 'метод поиска пользователя.

здесь скорректированная код-

            //mistake was actually here  
User.findOne({username:req.body.username}).select('email username password fullname').exec(function(err,user){ 
       //if(err) throw err; 
       if(!req.body.password||!req.body.username) 
       { 
         res.json({success:false,mesage:"please enter all the fields"}); 

       } 
       else 
       { 
        if(!user){ 
        res.json({success:false,message:"couldnt find the user"}); 
       } 
       else if(user) 
       { 
        if(!req.body.password) 
         res.json({success:false,mesage:"please enter password"}); 
        var validPassword=user.comparePassword(req.body.password); 
        if(validPassword){ 
         //jwt.sign ismethod to create JWT. 1st par is object containing data that token will contain. 
         console.log(user.fullname); 
         var token=jwt.sign({userid:user.username,email:user.email,fullname:user.orgname},secret,{expiresIn:'24h'}); 
         res.json({success:true,message:"loggedin Successfully",token: token}); 
        } 
        else 
        { 
         res.json({success:false,message:"wrong password"}); 
        } 
       } 
       } 

      }); 
Смежные вопросы