ASP.NET MVC 4 には [Authorize] 属性があり、対応する [AllowAnonymous] 属性があり、特定のコントローラー アクションにアクセスするための認証を簡単に要求できるようになりました。
私が必要としているのは、真のマルチテナンシーです。各ユーザーは自分のレコードのみにアクセスでき、ユーザー アカウント以外のすべてのレコードは個々のユーザーが所有する必要があります。
Rails プラグインである Hobo (http://hobocentral.net) では、ApplicationController に次のコード行を追加することで簡単に実現できました。
before_filter :login_required, :except => [:login, :signup, :do_signup, :activate]
そして、私のモデルでは:
belongs_to :owner, :class_name => "User", :creator => true
# --- Permissions --- #
def create_permitted?
acting_user == owner || !owner_changed?
end
def update_permitted?
acting_user == owner || !owner_changed?
end
def destroy_permitted?
acting_user == owner || !owner_changed?
end
def view_permitted?(field)
owner_is? acting_user or new_record?
end
そして最後に、私のモデルのコントローラーで:
def index
hobo_index current_user.modelName
end
これほどシンプルで洗練されたものは存在するのでしょうか、それとも ASP.NET MVC に組み込まれているのでしょうか? これまでのところ、ASP.NET MVC でマルチ テナンシーを実装する方法をいくつか見つけましたが、どれが明らかに正しい方法なのかはわかりません。また、.NET 4.5 と Entity Framework 5 が役立つ場合は使用するつもりです。