2010-12-15 6 views
0

私はウェブアプリケーションを作成しています。repoze.what & repoze.who私の認証&認証を処理したいと思います。問題は、つまり、repoze.whatは、特定のアクセス許可モデルを受け入れるようにハードコーディングされているように見えるということです:サイトへ代替のアクセス許可モデルwith repoze.what

  • 訪問者はいずれかのユーザー、または匿名でログインしています。
  • ユーザーアカウントは、0個以上のグループに属します。
  • グループには、関連付けられたアクセス許可が0以上あります。

たとえば、あなたの権限は '記事投稿できます'と 'コメント投稿できます'、あなたのグループは '著者'、 '訪問者'投稿記事&投稿者コメントは投稿のみできます。

このモデルはほとんどのサイトで有効です。しかし、私のサイトでは、チームがお互いに異なるレベルで協力することができます。したがって、私が必要とするセキュリティモデルは次のとおりです。

  • 訪問者はログインしているユーザーか匿名です。
  • ユーザーは0人以上のグループのメンバーです。
  • ユーザーが所属するグループごとに、そのメンバーシップには異なるアクセス許可が与えられます。たとえば、グループBの「作成者」または「グループA」ではなく「コメント」です。

グループの数は時間とともに変化し、それらのグループのメンバーシップも変更されます。このアクセス許可モデルをrepoze.whatに簡単に統合する方法はありません。私は明白な何かを欠いていますか

答えて

2

まあ、「Group_A_commenter」グループと「Group_B_editor」グループを簡単に持つことができます。手動で生成する必要はありません。 :)あなたのモデルは実際にはグループをグループ化するだけです。

ただし、ルールを実装するプレディケートチェッカーを作成することもできます。

http://what.repoze.org/docs/1.0/Manual/Predicates/index.html#term-predicate

0

は私がいじるのビットの後、答えを持っています。

答えは、repoze.whatのドキュメントで提案されている認証スキーマを使用する唯一の理由は、その場合、その述語を無料で使用できるということです。幸いにも、自分の述部を使って&を書くことは、ケーキです。唯一の難しい要件は、ユーザーオブジェクト(ただし、あなたが望むものを呼ぶことはできますが)です。私のアプリでは、次のような特定のものをチェックするカスタム述語がたくさんあります。

  • このユーザーはこのグループのメンバですか? (パラメータで指定されたグループ)
  • ユーザーはログインしていますか?
  • ユーザーがこの特定のサイトの役割を保持していますか?

私はどこでも好きなところでこれらの述語を使うことができます。

関連する問題