0

異なる役割を持つ複数のユーザーがいるアプリケーションがあります。リソースへの各ユーザーのアクセスは、彼が持つ役割によって制限されます。

これらのリソースを管理するアプリケーションを構築している場合、アプリケーションをどのように構成する必要がありますか。

役割:管理者、モデレーター、作成者リソース:記事

2つの選択肢があります。

1:役割ごとに個別のモジュールを作成し、役割のリソースへのアクセスを許可します。例:admin / -add / edit / delete article -add / edit / delete user author / -add / edit / delete own articles moderator / -edit articles

2:リソースごとに個別のモジュールを作成し、それらにアクセスするユーザーの役割に基づいてそれらへのアクセスを許可します。例:
articles / add / edit /delete[ユーザーの役割に応じて操作を管理する]

言語はPHPで、Zendフレームワークを使用します。ZendのACLコンポーネントがアクセス許可を処理するため、私の問題はアクセス許可に関するものではありません。私の問題は、アプリケーションの編成にあります。

たとえば、新しいユーザーが導入された場合、最初のケースでは、新しいモジュールを作成する必要があります。しかし、2番目の方法の場合、すべてのモジュールを更新する必要があります。

最初のアプローチにはより多くのファイルが含まれ、より複雑でないロジックが必要になることは明らかですが、2番目のアプローチにはより複雑なロジックが必要ですが、どちらをフォローしてアドバイスを探すかはわかりません。どんな助けでも大歓迎です。

ありがとう。

4

2 に答える 2

0

実際には、すべてを構築している言語/プラットフォームによって異なります。ほとんどのプラットフォームには、セキュリティのサポートがすでに組み込まれています。

この答えは.NET用です。

特別なことは何もしません。組み込みのセキュリティモデルを使用します(CAS =コードアクセスセキュリティ)。

特定の属性を使用して、メソッドへのアクセスを制限できます。MVCアプリを構築している場合は[Authorize]属性を使用できますが、通常のアプリではを使用できます[PrinicpalPermission]

それを機能させるには、実行中のすべてのスレッドにプリンシパルを割り当てる必要があります(System.Threading.Thread.CurrentPrincipal = new MyPrincipal(myUserInfo))。

ASP.NETはこれを自動的に実行し、他のアプリケーションは現在ログインしている(windows)ユーザーをデフォルトとして使用します。

于 2011-06-08T12:34:38.340 に答える
0

一般的なアプローチは、リソースへのアクセスではなく、アクセスされたリソースでアクセスロジックを維持することだと思います。

あなたの例では、特定のユーザーのみが記事を編集できるようにしたい場合、誰が編集したかを確認するのが記事の仕事であることを意味します。

すべてのロジックは次のようになります。

if user is article.owner or admin
    ...make things happen

また、新しいユーザー ロールを追加したり、既存のユーザー ロールの動作を変更したりする場合は、この 1 つの条件を編集するだけで、まったく同じで少し異なる別のユーザー モジュールを作成する必要はありません。

于 2011-06-08T13:22:19.803 に答える