2017-01-16 3 views
0

ログインログアウトオプションを持つMEANスタックWebアプリケーションを作成しました。ログインするユーザーはjsonwebtoken npmパッケージを使用しています。 JWTユーザがログインが作成されたときにここでの主な問題であり、そのトークンのペイロードでは、ユーザー名、電子メールやフルネームを含んでいますが、私はここだけのユーザー名と電子メールのフィールドJWTのペイロードからすべてのフィールドを取得していない

を取得していたトークンをデコードするjwt.sign機能 -

ありながら、
var token=jwt.sign({userid:user.username,email:user.email,fullname:user.fullname},secret,{expiresIn:'24h'}); 

、ここ

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 
をMETHOD- jwt.verify

トークン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

私は間違いを発見 '.findOneを(使用している間、私は)「.select()' メソッドのパラメータとしてフルネーム入力するのを忘れ'メソッドを使用してユーザーを検索します。ここ

            //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"}); 
        } 
       } 
       } 

      }); 
コード - 修正されます
関連する問題