4

スタック オーバーフローには、編集できる内容やシステムに新しいタグを追加する機能など、サイト上の多くのことを決定するポイント ベースの権限システムがあります。

特にアーキテクチャの実装に関して、そのようなシステムを設計している人にどのようなアドバイスをしますか? アクセス許可はどこに保存しますか? これらの権限をどのように使用して、ビューで編集可能に表示されるフィールドを決定しますか? 研究に役立つオープンソースのコード例はありますか?

質問やドキュメントなどのオブジェクト モデルの所有権または共有に関して、所有者への参照をそのオブジェクトのモデルに格納することと、そのオブジェクトへの参照をアカウント モデルに格納することの長所と短所は何ですか? 例えば

document = { id:          21234,
             owner_id:    4d3ca9f1c067,
             shared_with: [a50d1e000138, 4d3ca9f1c067a, 50d1e000138] }

対。

user = { id:              4d3ca9f1c067,
         documents_owned: [21234, 31452, 12312],
         collaborates_on: [23432, 43642, 12314, 23453] }
4

1 に答える 1

1

パーミッションは、パーミッションが必要なポイント ペアとして別のモデルに格納します。

ビューで、上記の権限モデルを参照して、ログイン ユーザーが項目ごとに表示するのに十分な権限を持っているかどうかを判断します。

モデル オプション: (1) よりシンプルでフラットな構造を持っているため、質問を一覧表示するときにユーザー テーブルを介してネストされたループがなく、(2) ドキュメントを削除してもユーザー オブジェクトを更新する必要がないため、前者を好みます。(ドキュメントの削除などでスコアが下がった場合を除きます。)

于 2011-02-23T19:52:34.353 に答える