1

ユーザーに基づいた ACL (アクセス制御リスト) が必要な CRUD ベースのデータベースを開発しています。必要に応じてコンテンツをすばやく削除したり、モデレートしたりできるように、管理者アクセス パネルもあるようにしたいと考えています。利便性のために別のインターフェイスにすることができるように、柔軟性を維持しようとしていますが、一般的なユーザーインターフェイスから逸脱しないようにしています。そうしないと、維持が難しくなります。

バックエンドが ACL を処理すると仮定すると、フロントエンドでユーザー インターフェイスの作成を処理するにはどのような方法がよいでしょうか? サービスを提供するために別の BB.js インターフェイスを作成する必要がありますか、それとも無視されるすべてのユーザーに少し余分なコードを渡しても問題ありませんか?

推奨事項や警告もいただければ幸いです。

4

1 に答える 1

0

私はあなたの質問を、さまざまなアクセス レベルのユーザーにさまざまなインターフェイスを提供したいと考えていると解釈しました。したがって、私は:

  1. ユーザーが各ルートに到達する前にアクセスをチェックして、アクセスしてはいけないページにアクセスしていないことを確認します

  2. 彼らはまだこれを回避しようとすることができます (ユーザーモデルを変更できるため)、バックエンドは未承認のリクエストを引き続きキャッチします.

  3. ユーザーのアクセス レベルに基づいて、ページ要素を条件付きで表示および非表示にすることもできます。

私のACL.coffeeのコード例を次に示します

acl = {}

acl['admin'] = [
    'page1',
    'page2',
    'page3',
    'page4',
    'page5'
]

acl['user'] = [
    'page1',
    'page2',
    'page3'
]

hasAccess = (route) ->
    # Get User Model
    user = window.App.user
    # Get Associated ACL
    permissions = acl[user.get('role')]
    # Check each URL for Access Privileges
    # Returns false if route not in array
    permissions.some (r) -> ~route.indexOf r

{hasAccess}
于 2013-03-22T07:42:01.060 に答える