1

アイテムのコレクション(モデル、コレクション、コレクションのビュー、個々のアイテムのビューとテンプレートファイル)を実装しています。それに加えて、いくつかのセッション変数があります (たとえば、ユーザー資格情報/セッション プロパティ/権限)。ユーザーの権限に応じて、各項目に異なるフィールドとオプションを表示したいと思います (通常のユーザーはそれらを表示するだけで、管理者は編集/削除などを行うことができます)。それを行う最もクリーンな方法は何ですか?ビュー コンストラクターを介してセッションを渡す方法や、セッション構造への参照を各モデルに追加する方法は正しくないようです。私が望むのは、これらのセッション構造をグローバルにし、ビューのテンプレート内からアクセスできるようにすることですが、それが正しいアプローチであるとは思えません。

ありがとう

4

1 に答える 1

2

私が同じ問題にアプローチした方法は、次のように、パーミッション チェックを使用してモデルとコレクションをセットアップし、モデル クラスにロジックを実装することです。

PermissionModel = Backbone.Model.extend({

  hasPermission: function(permission){
    // pessimistic default implementation, override in inherited model classes
    return false;
  }

});

このモデルからモデルを継承し、アプリが比較的単純な場合はアクセス許可ロジックのグローバル フラグ チェックを使用し、より複雑な場合は何らかの ACL を使用します。例えば。

hasPermission: function(permission){
  switch (permission) {
    case "read":
      return true;
    case "write":
      return window.app.user.isAdmin(); //app.user is defined in the app initialization
    default:
      return false;
  }
}

テンプレートでは、このロジックを使用できます。ハンドルバーを使用する場合は、テンプレート ヘルパーを定義できます。

{{#ifPermission model "read"}}You have permission{{/ifPermission}}
于 2012-08-17T21:49:35.810 に答える