2017-06-16 8 views
-1

nodejs認証(KoaJS2)を理解できません。JWTは保存されていません...それを表示するには?

私は、コードのこの部分があります。私はそれに署名した後、トークンが保存されている

router.post("/login", koaBody, (ctx, next) => { 
    const data = ctx.request.body; 
    db 
    .any("SELECT * FROM users ORDER BY id ASC") 
    .then(function(data) { 

     token = jwt.sign(data, token_secret, { 
     expiresIn: "24h" // expires in 24 hours 
     }); 

     console.log(ctx.request.header); 
     // ctx.set("token", `test`); 
    }) 
    .catch(function(error) { 
     // error; 
    }); 

を?

ない「認証」ヘッダが正しいことをあなたはニアリーサーバ側

+0

JWTを格納する2つの手法は、ローカルストレージとクッキーです(私が知っている) – RandomUs1r

+0

クッキーはクライアントサイドのJavascriptからのみ保存されていますか? 私はそれをサーバ側で行うことはできません。 –

答えて

0

は...ありません。クライアントにトークンをバック返す:あなたが何をする必要があるかクライアント側

router.post("/login", koaBody, (ctx, next) => { 
    const data = ctx.request.body; 

    // ... 
    // extract username and password from body 
    // ... 

    db 
    .any("SELECT * FROM users ORDER BY id ASC") // here using and checking credentials is also missing ;-) 
    .then(function(data) { 

     // create the token 
     token = jwt.sign(data, token_secret, { 
     expiresIn: "24h" // expires in 24 hours 
     }); 

     // now you have to pass it back to the client 
     // the token is NOT stored on the server side! 
     ctx.body = { 'token': token } 
    }) 
    .catch(function(error) { 
     // error; 
    }); 

- あなたが身体に戻ってトークンを取得する場合 - あなたは、例えば、それを保存しますローカルストレージに

私はこのようになります。ここでは、クライアント側のコード(クライアント側のログインサービス)を、角2を使用しています:

login(credentials) { 

    const headers = new Headers(); 
    headers.append('Content-Type', 'application/json'); 
    headers.append('Accept', 'application/json'); 
    const reqopt: RequestOptions = new RequestOptions({ 
     headers: headers 
    }); 

    // credentials: username, password -- 
    return this.http.post(...your_api_endpoint_ + '/login', credentials, reqopt) 
     .map(res => { 
     const data = res.json(); 
     if (data && data.token) { 
      localStorage.setItem('token', data.token); // <--- here you store your token 
     } 
     }); 
} 

あなたが今、もう一度、あなたのAPIを打つたびに、しないでくださいヘッダーにトークンを指定し、サーバー側で確認してください(JWT.verify())。 https://medium.com/vandium-software/5-easy-steps-to-understanding-json-web-tokens-jwt-1164c0adfcec

希望に役立ちます:

ここでは、JWTに、より一般的な紹介を見つけることができます。

関連する問題