NodeJS、Express、MongoDBでSaaS APIを開発しています。 JWT認証/セキュリティ方法を実装しています。RESTful APIのユーザ権限を確認
私の個人的なケースでは、私は今のところ2つのコレクションUserとClientを持っています。
あなたが(目的を定義するための)各コレクションが持つフィールドを表示することができます。すなわち
これはまさに私が「ポイントでクライアントを挿入するには:
- /API /ユーザー/ {userIdを} /クライアント:だから、エンドポイントのデザインの面で、私はそうtrully安らかなアプローチを使用しています価格プランがユーザーにそれを許可するかどうかをチェックするために新しいクライアントをポストする前に、私が望むことをもたらす。ロジックの面では:私の疑問の点で
function post(req,res){ // Check if the JWT user.id is the same of the endpoint request if(req.user._id == req.params.id){ // Here I want to know which is the price plan and to count the Clients that the user has } }
私はいくつかの仮説に考えているが、私は本当に最高である1かわからない:
- は、ユーザーのコレクションにクエリを実行し得ます価格プラン、クライアントコレクションのクエリカウントを検証し、新しいクライアントを投稿します。
- ユーザーの料金プラン情報をJWTに入れ、ユーザーのクライアントコレクションのクエリカウントで検証して新しいクライアントを投稿します。
これらは私が考えた2つの主な解決策ですが、私は実装/実行する必要のあるセキュリティとパフォーマンスを賢明に疑っています。
ありがとうございます。
もう一度Sergey、私はあなたの意見を非常に高く評価します。私の具体的なニーズを分析すると、このワークフローでは3つのクエリが必要ですが、オーバーヘッドではないと思いますか?はい、私の困難は、今のところコードワイズではありませんが、実際にはアーキテクチャーや意思決定が賢明です。そのような知識だけを得るのは難しいです。 – Ricardo
私は個人的にルールを持っており、それを社内に強制するので、300ms以内に何らかの応答を与える必要があります。これは上限ですが、もちろん可能な限り多くの速度が必要です。一方、私は個人的には、最適化をミクロの最適化と最適化に分割しています。マイクロ最適化では時間がかかりますが、結果は時間を費やす価値がありません。私が取り組んでいた以前のプロジェクトの1つは、1ページごとにレンダリングするために約400 dbのクエリを作成しました。そしてまだ働いていた。この場合の3つのクエリは考えても価値がありません。しかし、あなたの場合はあなたが決める。 –