8

開発を始めようとしている Web アプリについて考えていて、いつものアプローチを改善できないかと考えていました。

CREATE POST最近のいくつかのアプリでは、ロール ( など) のテーブル (以下を参照) を作成しましたEDIT POST。各ロールにはビットフィールドが適用されているため、登録時にユーザーに特定の権利を割り当てるだけで、後でそれらを確認できます (例: $user->hasRight(CREATE_POST))。

これに対するより良いアプローチがあるかどうか疑問に思っています。権利がユーザーに明確にリンクされていない場合、確かに混乱します (各権利がブール列である表を作成することもできますが、それは小さな改善のように思えます) - そして、いくつか変更するとどうなりますか?

私は標準ライブラリを使用するつもりはありません (アプリ自体は私にとって学習経験です: postgresql、git などを使用します)。ただし、それらからインスピレーションを得て独自のライブラリを構築することは完全に満足しています。私はそう言ってください見てみる必要があります:)

4

4 に答える 4

5

広く使用されている Java ACL フレームワークである Spring Security (以前の Acegi) のドキュメントを参照してください。

ドキュメントは網羅的であり、ボットの認証と承認の設計におけるさまざまな考慮事項についても説明しています。Java を使用しなくても、読む価値があります。

インデックス ページを表示して、Acegi が行うこと (および行わないこと) の概要と印象を得ることができます。また、承認の概念データベース スキーマにスキップすることもできます。

于 2009-02-13T17:22:50.587 に答える
4

これは基本的に、私が自分の Web アプリで採用しているアプローチと同じです (そして、少し試行錯誤を繰り返しました)。唯一の違いは、後でさらに権限を追加したい場合に、列として異なる権限を持つテーブルを使用する可能性があることです。整数でビットを使用すると、パーミッションの固定数、つまり整数のビット数に制限されます。通常は 32 で十分だと思いますが、私はそのように制限したくありません。

価値があるのは、それが phpBB が使用するモデル (テーブル列としてのパーミッション) でもあり、おそらく最も人気のある PHP Web アプリで十分である場合は、おそらく十分であるということです ;-)

于 2009-02-13T16:44:46.527 に答える
1

Web アプリケーションにおける ACL のアプローチは、一般に、ここなどで説明されています。

于 2009-06-19T19:29:00.903 に答える
1

すでに phpgacl を見つけていると思いますが、まだ見つけていない場合のために、ここにリンクを示します。最初は理解に苦しむかもしれませんし、ライブラリをプロジェクトに実装するのは難しい (時間がかかる) ことは確かですが、ドキュメントとデモは優れたリファレンス ポイントです。

PHP 汎用アクセス制御リスト

于 2009-02-13T16:47:18.410 に答える