2017-11-13 10 views
0

こんにちは私はjsonwebtokens、passport-jwt.Iで作業しているノードアプリケーションに取り組んでいます。アプリケーションのバックエンド側を作成して、郵便配達でうまく動作しましたが、フロントエンド側でスタックしました。郵便配達員のヘッダーにトークンを送信すると、トークンベースのページが郵便配達員には表示されますが、正面に表示されるのは無認可です。ヘッダーにトークンを送信すると、このページもフロントエンド側で開くことができます。 私のコード:ノードjsに認証ヘッダーを設定する方法は?

app.post("/login", function(req, res) { 
    if(req.body.name && req.body.password){ 
    var name = req.body.name; 
    var password = req.body.password; 
    } 

    var user = users[_.findIndex(users, {name: name})]; 
    if(! user){ 
    res.status(401).json({message:"no such user found"}); 
    } 

    if(user.password === req.body.password) { 
    // from now on we'll identify the user by the id and the id is the only personalized value that goes into our token 
    var payload = {id: user.id}; 
    var token = jwt.sign(payload, jwtOptions.secretOrKey); 
    //res.json({message: "ok", token: token}); 
    res.redirect('/secret') 
    } else { 
    res.status(401).json({message:"passwords did not match"}); 
    } 
}); 

app.get("/secret", passport.authenticate('jwt', { session: false }), function(req, res){ 
    res.json("Success! You can not see this without a token"); 

    }); 

私は間違っていますか?あなたの/ログインあなたは彼らが将来の使用のためのsessionStorageにトークンを保存することができますで

+0

ので、あなたが –

+1

後に認可持続性を維持したいです角度js ..何が普通のjavascriptですか? –

+0

@Rajajiを使用するよりも、クッキーにトークンを保存することができますログイン成功 – Nitin

答えて

1

...この

if(user.password === req.body.password) { 
    .... 
     var payload = {id: user.id}; 
     var token = jwt.sign(payload, jwtOptions.secretOrKey); 
     req.session.token = token ; 
    } 

} 

使用などの

何かクライアント側でのsessionStorageを更新するには、このセッション

here is an articleログイン後のログインに必要なもの...

あなたはログアウトにクッキーを破壊する必要が

+0

そのために...はい、将来の要求を検証するために使用することができますが、 – Nitin

+0

私は答えを更新しました...このトークンをクライアント側に渡す必要があります...セッション中にそれらを保持してください...クライアント側にajaxレスポンスとして送信してください...またはejs.saveにあります。あなたはログアウトまで承認されます。 –

+0

まだ動作していません。何かがapp.get( "/ secret"、passport.authenticate( 'jwt'、{session:false})、function(req、res){ res .json( "成功!これはトークンなしでは見ることができません"); }); ?? – Nitin

0
if you are getting token,you can send it as: 

**

せヘッダ=新しいヘッダ({ 'Content-Typeの': 'アプリケーション/ JSON'、 '認証': 'ベアラー '+ this.token});

**

+0

これはどこに適用されましたか? – Nitin

+0

これは、HTTPリクエストをフロントサイドに作成する場合に適用されます。 –

+0

var headers = new Headers(); headers.append( 'Content-Type'、 'application/json'、 'Authorization': 'Bearer' + this.token}); (res:Response)=> res.json()); この返信を返します._http.post(URL、DATA、{ヘッダー:ヘッダー})。 –

関連する問題