0

私が書いているアプリケーションのユーザー/ロール関係を実装する方法を理解しようとしています。永続層は Google App Engine のデータストアであり、何ができるかについて興味深い (しかし一般的には有益な) 制約を課します。どんな考えでも大歓迎です。

物事を非常に具体的に保つことが役立つ場合があります。組織、利用者、試験内容、試験実施者(受験した試験の記録)があってほしい。ユーザーは、参加者 (受験者)、テスト資料の寄稿者、またはその両方の役割を持つことができます。ユーザーは、0 個以上の組織のメンバーになることもできます。参加者の役割では、ユーザーは自分が受けたテストの以前の管理を見ることができます。その参加者がユーザー権限を与えている場合、ユーザーは別の参加者のテスト管理も表示できます。ユーザーは公開されたテスト資料を見ることができ、そのユーザーが組織によって承認されたテストの特定の管理中に参加者として制限されたコンテンツを見ることができます。組織の一員として、ユーザーは、投稿者の役割で制限されたコンテンツを表示できます。また、コンテンツを編集できる場合とできない場合があります。各組織には、メンバーがコンテンツを表示および編集できるかどうかを決定し、管理者権限を持つユーザーを決定できる 1 人以上の管理者が必要です。また、問題をトラブルシューティングして解決できるアプリケーション全体のスーパーユーザーが 1 人以上必要です。組織のメンバーは、関係する参加者が閲覧を許可したテストの管理を閲覧でき、許可が与えられていない場合は匿名データを閲覧できます。それ以外の状況では、ユーザーは別のユーザーのテスト結果を見ることができません。各組織には、メンバーがコンテンツを表示および編集できるかどうかを決定し、管理者権限を持つユーザーを決定できる 1 人以上の管理者が必要です。また、問題をトラブルシューティングして解決できるアプリケーション全体のスーパーユーザーが 1 人以上必要です。組織のメンバーは、関係する参加者が閲覧を許可したテストの管理を閲覧でき、許可が与えられていない場合は匿名データを閲覧できます。それ以外の状況では、ユーザーは別のユーザーのテスト結果を見ることができません。各組織には、メンバーがコンテンツを表示および編集できるかどうかを決定し、管理者権限を持つユーザーを決定できる 1 人以上の管理者が必要です。また、問題をトラブルシューティングして解決できるアプリケーション全体のスーパーユーザーが 1 人以上必要です。組織のメンバーは、関係する参加者が閲覧を許可したテストの管理を閲覧でき、許可が与えられていない場合は匿名データを閲覧できます。それ以外の状況では、ユーザーは別のユーザーのテスト結果を見ることができません。許可が与えられていない場合、匿名データを見ることができます。それ以外の状況では、ユーザーは別のユーザーのテスト結果を見ることができません。許可が与えられていない場合、匿名データを見ることができます。それ以外の状況では、ユーザーは別のユーザーのテスト結果を見ることができません。

App Engine データストアには結合がないため、パーミッションをチェックするクエリ (たとえば、リンクが必要かどうかを判断するクエリ) が高速であることを確認するために、一般的な SQL データベースでは通常よりも正規化されていないものが必要になる場合があります。表示されます)。

私の質問は次のとおりです。

  1. これを進めるにはどうすればよいですか?モデルを正しく作成するために、事前に多くの時間を費やす必要がありますか?それとも、数回繰り返して、徐々に複雑さを増していくことができますか?
  2. この場合、物事を分割する方法について一般的なアイデアを持っている人はいますか?
  3. この配置と互換性のある方法で役割を処理する GAE ライブラリはありますか?
4

1 に答える 1

1

私はあなたの質問を正しく理解しているかどうか確信が持てませんが、答えられるように最善を尽くします:

  1. 私は常に、反復型プログラミングの方がテストと作成が容易であると考えているので、それをお勧めします。
  2. 必要なエンティティは既に正しく分割されていると思いますが、追加のエンティティが必要だと思います: Permission、各ロールができることを定義し、各ロールには 0 個以上のPermissionリンクがあります。GAE の多対多の関係ごとに、キーのリストを定義するか、仲介となる別のエンティティを定義する必要があることを覚えておいてください。
  3. 私が知っていることではありませんが、Django ベースの役割システムを調査し、Django ベースのソリューションを採用することをお勧めします (Django は以前から存在しているため)。App Engine Patchを使用すると、Django を GAE にうまくハッキングできます。
于 2009-06-04T05:00:25.090 に答える