1

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 が役立つ場合は使用するつもりです。

4

1 に答える 1

-2

asp.net MVCで何らかのタイプの組み込み認証を使用している場合、次のようなものを使用できるため、すでに存在しています

HttpContext.Current.User.Identity.Name

また、ある種の内部認証メカニズムを使用していない場合は、認証時にユーザーが主キーをsession変数に保存するときに、私が行ったことを簡単に行うことができます。

Session["User"] = Key;

そして、各コントローラー内で変数を取り出します

var key = Session["User"];

キーに基づいてユーザーデータを取得します

于 2012-07-23T12:23:11.160 に答える