どのように私は、Webアプリケーションに私のACLを実装すべきですか? [閉まっている]
-
23-08-2019 - |
質問
私は私が開発し、私のいつものアプローチを向上させることができるかどうか迷っ始まろうとしていたWebアプリケーションについて考えてきます。
私の最後のいくつかのアプリケーションでは、私はテーブルを作成しました。(、CREATE POST
などなどEDIT POST
など)は、それぞれビットフィールドが適用されているので、私は単純にユーザーが登録し、チェックに一定の権利を割り当てることができる役割の(下記参照)それら後に(例えば$user->hasRight(CREATE_POST)
)。
私は思ったんだけど。権利を具体的にユーザーにリンクされていないとき、それは(私は、各権利はブール列でテーブルを持っているだけでは、小さな改善のように聞こえることができます)確かに混乱だ - と私は周りのいくつかを変更した場合何が起こる
? 何かがありますので、もし - 私は自分自身を構築するために彼らからインスピレーションを取るために完全に満足しているものの:私は(PostgreSQLの、gitのなどを使用して、アプリ自体は私のための学習体験である)標準ライブラリを使用するために探していませんよ特別なあなたは、私がそう言うてくださいを見てみるべきだと思う:)
解決
これは基本的に私は自分のWebアプリケーションに取る(と試行錯誤のビットが私のためにそれに入った)と同じアプローチです。唯一の違いは、後でより多くの権限を追加したい場合は、あなたができるように、私はおそらく、コラムなど、さまざまな権限を持つテーブルを使用すると思い、です。整数であるとして、整数のビットを使用する権限、すなわちのような多くの固定のビット数にあなたを制限します。通常、それは私はおそらく十分であると仮定し32になるだろうが、私は自分自身をそのように限定するものではないことを好むます。
それは価値がある何のためには、それはそれは十分に良いことだ場合は、間違いなく最も人気のあるPHPのWebアプリケーションのために、それはあなたのために十分な、おそらく良いことだのphpBBの使用(テーブルの列などの権限)モデルもあります; - )
他のヒント
あなたは広く使われているJavaのACLのフレームワークである春のセキュリティ(旧Acegiの)、のドキュメントを見てみることができます。
ドキュメントが網羅され、また、ボットの認証と認可のデザインで作られた様々な考慮事項について説明します。でも、Javaを使用せずに、それは立派な読書です。
あなたはインデックスページへ概要とAcegiのはありません(とない)何をすべきかの印象を得ます。あなたはまた、右の<のhref =「http://static.springframework.org/spring-security/site/reference/html/authorization-common.html」のrel =「nofollowをnoreferrer」タイトル=「認証の概念」にスキップすることができます>承認コンセプトのかさえ<のhref = "http://static.springframework.org/spring-security/site/reference/html/appendix-schema.html" のrel = "nofollowをnoreferrer" にタイトル= "データベーススキーマ">データベーススキーマでます。
私はあなたがすでにphpgaclを見つけたと確信しているが、ここではあなたがいない場合のリンクです。最初は周りにあなたの頭をラップするために少し荒いことができ、そして確かにライブラリがプロジェクトに実装する(時間がかかる)トリッキーですが、ドキュメントとデモは、優れた基準点です。
<のhref = "HTTPを持っての Zend Frameworkに://フレームワーク。 zend.com/manual/en/zend.acl.html」のrel = "nofollowをnoreferrer"> ACL をあなたがしようとしているものと同様である。
ACLは、例えば、一般的に、議論されている、Webアプリケーションに近づくここします。