2016-11-04 9 views
0

loopback.getCurrentContext()には長期的に不安定な問題があり、現在は廃止予定であるため、ユーザーがAPIエンドポイント経由でいくつかの操作を実行する際に、現在のユーザーIDをループバックで取得する方法

リクエストペイロードにトークンIDを送信して確認できますか?ユーザーがそれを偽造するとどうなりますか? Githubの問題ページからそれらのハッキーなソリューションの代替案は何ですか?

答えて

0

あなたが反応してAccessTokenをあなたに戻って与える必要があり、その中にユーザーがログインしたら、要約するとhttps://docs.strongloop.com/display/public/LB/Making+authenticated+requests

をチェックしてください。アクセストークンは、リクエストごとにチェックされているとして、それは現在だことを確認するために、これは簡単に偽造することはできません

# Authorization Header 
curl -X GET -H "Authorization: $ACCESS_TOKEN" \ 
http://localhost:3000/api/widgets 

# Query Parameter 
curl -X GET http://localhost:3000/api/widgets?access_token=$ACCESS_TOKEN 

: あなたは、あなたがユーザーでログインしていることを証明するために、ヘッダーまたはクエリ文字列にそれを使用することができます有効です。

あなたはこれをしたら、あなたは

app.use(function(req, res, next) { 
    app.currentUser = null; 
    if (!req.accessToken) return next(); 
    req.accessToken.user(function(err, user) { 
    if (err) return next(err); 
    req.currentUser = user; 
    next(); 
    }); 
}); 

があなたのserver.jsまたは起動スクリプトにこれを追加し、それゆえ持つ(REQオブジェクトにユーザーを取り付ける以外https://github.com/strongloop/loopback/issues/569#issuecomment-60924099から取られた)を介してaccessTokenで取得することができますuserオブジェクトはいつでもctx.req.currentUserにあります。

+0

操作フックでctx.reqオブジェクトを取得できますか? – Asaf

+0

いいえ簡単にはありません。私はそれをすることができなかったし、私は行った。操作フックでユーザーを取得することは、現在私が遭遇した最大のループバック問題です。見ているが、短期間には何も期待していないという顕著な問題があります。ごめんなさい。 – JonRed

+0

ありがとうございます。 DBのいくつかの所有者のプロパティに現在のユーザーを保存するための最良の方法は何ですか? – Asaf

関連する問題