ユーザコントローラにGET要求を行うNode-Express REST APIがあります。/users/:id
- :id
はデータベースに格納されているユーザID番号です。私はまた、APIを呼び出すReact-Reduxクライアント側のアプリケーションを持っています。要求を行うために、クライアントアプリケーションはuser-idにアクセスする必要がありますが、現在のところ、クライアント側にuser-idを格納する最良の方法は不明です。API-RequestのクライアントサイドアプリケーションにユーザIDを格納する
追加のコンテキストでは、私のAPIは、ユーザIDを保持するログイン時にJWT tokenをクライアントに送信します。クライアントアプリケーションはlocalStorage
にトークンを保存します。クライアントがリクエストを行うと、APIはデコードされたトークンのuser-idがURLに含まれるIdと一致することを確認してから、クライアントに応答を返します。
私は2つの潜在的な解決策を参照してください。クライアントにJWTトークンをデコードし、API呼び出しを行うために、トークンに格納されているユーザーIDを使用し
- を。私はクライアントアプリケーションに秘密を保存する必要があると考えているので、これは潜在的なセキュリティ上のリスクだと思います。また、トークンを持っているユーザーは、ユーザーの情報にアクセスできます。
- APIは認証時にuser-idを送信し、クライアントは
localStorage
にそれを保存します。 (私はReduxストアに保存するとユーザーIDの状態を消去してリフレッシュすることができないと思います)。私の感覚は、これはベストプラクティスではないということです。なぜなら私はこのアプローチをとっている他の多くのクライアントサイドのアプリを見ていないからです。
2つのうちどちらが優れた解決策ですか、それとも私が検討していない別のアプローチですか?あなたは:id
が提供されたかどうかを確認していない場合、その後、あなたのJWT
トークンからIDを抽出することができ、あなたの/users/:id
エンドポイントで
あなたの最初のオプションに応答してください:それはREST API規約に反するでしょうか?基本的に '/ users /'のように見えるIDが与えられていない場合、トークンからIDを取得するべきだと言われますが、 '/ users /'へのgetはクライアントがすべてのユーザのリスト。 – Nahro