2016-08-27 19 views
0

私はパスポートJWTに新たなんだと、このコードは、クライアントからのPOSTリクエストの送信があります。Jwtトークンが抽出されないのはなぜですか?

export function checkLogin() { 

    return function(dispatch) { 
    //check if user has token 
    let token = localStorage.getItem('token'); 

    if (token != undefined) { 

    //fetch user deets 
    var config = { 
     headers: {'authorization': token, 'content-type': 'application/json'} 
    }; 

    axios.post(`${API_URL}/login`, null, config) 
    .then(response => { 
     console.log('response is:', response); 
    }) 
    .catch((error)=> { 
     console.log(error); 
    }); 
    } 
    //user is anonymous 
} 

をし、この要求がそうのようなヘッダーでトークンと罰金をオフに送信されます。サーバー上で

Accept:application/json, text/plain, */* 
Accept-Encoding:gzip, deflate 
Accept-Language:en-US,en;q=0.8 
authorization:eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE0NzIzMTg2MDE5NTd9.SsCYqK09xokzGHEVFiHtHmq5_HvtWkb8EjQJzwR937M 
Connection:keep-alive 
Content-Length:0 
Content-Type:application/json 
DNT:1 
Host:localhost:3090 
Origin:http://localhost:8080 
Referer:http://localhost:8080/ 
User-Agent:Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36 

を側は、それが正しくパスポートを経由すると、このコードに当たっている:

// setup options for JWT strategy 
const jwtOptions = { 
    jwtFromRequest: ExtractJwt.fromHeader('authorization'), 
    secretOrKey: config.secret, 
    ignoreExpiration: true 
}; 

//create JWT strategy 
const jwtLogin = new JwtStrategy(jwtOptions, function(payload, done) { 

console.log('payload:',payload); // --> payload: { iat: 1472318601957 } 

// see if the user ID in the payload exists in our database 
    User.findById(payload.sub, function(err, user) { 
    if (err) { 
     console.log('auth error'); 
     return done(err, false); 
    } 
    //if it does, call 'done' function with that user 
    if (user) { 
     console.log('user authd:', user); 
     done(null, user); 
      //otherwise, call 'done' function without a user object 
    } else { 
     console.log('unauthd user'); //--> gets here only 
     done(null, false); 
    } 
    }); 
}); 

問題はextractJwt機能のみIAT部分を返していないということです私はdbを確認する必要があるサブ部分。私は間違って何をしていますか?

+0

iat 1472318601957とはどういう意味ですか? – notionquest

+0

関数tokenForUser(ユーザー){ const timestamp = new Date()。getTime(); //件名と時刻に発行 return jwt.encode({sub:user.id、iat:timestamp}、config.secret); } – Coco

答えて

1

私はそれを理解しました。トークンジェネレータ機能がどのように機能しているかを調べました。私はマングースを使用することだし、それは、このようなトークンにユーザモデルのIDを渡した:

function tokenForUser(user) { 
    const timestamp = new Date().getTime(); 
    //subject and issued at time 
    return jwt.encode({ sub: user.id, iat: timestamp }, config.secret); 
} 
私は、この関数に送信された実際のモデルを見て、それはマングースにidを追加することが判明し

キー_idがidではありません。一度これを変更するとすべてが機能します!

function tokenForUser(user) { 
    const timestamp = new Date().getTime(); 
    //subject and issued at time 
    const userid = user['_id']; 
    return jwt.encode({ sub: userid, iat: timestamp }, config.secret); 
} 
関連する問題