5

クライアント側でほぼ完全にレンダリングされたJavaScript Webアプリケーションがあります。データは、REST インターフェイスを介してモデルを使用してクライアントとサーバー間で交換され、クライアント側のテンプレートを使用してレンダリングされます。

ユーザーの役割/許可に基づいて、条件付きで UI の一部をレンダリングする (またはいくつかの操作を実行する) 必要があります (承認はサーバー側のモデル ベースの ACL です)。

次のことを考慮して、server から client に許可データを通信する最良の方法は何ですか?

  1. 交換されたモデルには、特定の権限を持つ他の組み込みモデルが含まれる場合があります
  2. 異なるモデルの READ および CREATE パーミッションも知る必要があります (そのため、モデル オブジェクトはクライアント側でまだ利用できません)
  3. REST 呼び出しと DB 呼び出しを最小限に抑える必要があります
4

2 に答える 2

3

クライアントは、リクエストごとにサーバーから返された情報に基づいて、ユーザーにコントロールを提示する必要があります。サーバーからの応答に、アクションの実行に使用することを目的とした情報が含まれている場合、クライアントはそのヒントを取得し、ボタンを有効にするか、表示するか何かを行う必要があります。

このアプローチを使用すると、リソース/特権(このモデル+そのHTTPメソッド)の観点からACLを定義できます。サーバーがリソースの表現を返そうとしているとき、ユーザーがそのリソース(または子/子孫リソースなど)に対して所有しているすべての特権についてACLをポーリングすることにより、ユーザーがそのリソースに対して表示する必要のあるオプションを含めることができます。

于 2012-09-24T07:19:57.480 に答える
0

アプリケーションの要件が何であるか、または現在 JavaScript フレームワークを使用しているかどうかはわかりません。私はここを見ます。Addy Osmani は JavaScript コミュニティで非常に大きく、この JavaScript フレームワークの作成に貢献しています。あなたの質問を処理する能力があるようです。以下は、メインの README からの引用です。

サンドボックスにはアクセス許可レイヤーが含まれており、特定のウィジェットがページにレンダリングする権利を持っているかどうかなど、ウィジェットのアクセス許可を構成できます。

ページレベルのセキュリティの処理をよりクリーンにし、多くのコードを書き直す必要がないことを意味する、他にも多くの JavaScript フレームワークを調べることができます。もう 1 つの例はBackbone Marionette です。これには、ページ レベルのセキュリティを簡単に実装できる複合ビューの概念があります。

最後に、セキュリティ情報をまったく転送しないという選択肢もあります。REST API は、アクセスできるモデル情報しか提供できませんでした。いわば「不足している」データを適切に処理する方法で、クライアント側のテンプレートを作成する必要があります。

于 2012-09-08T17:37:08.853 に答える