2012-07-23 117 views
1

在ASP.NET MVC 4中,我看到有和[Authorize]属性,现在有一个相应的[AllowAnonymous]属性,可以轻松让您需要身份验证来访问特定的控制器操作。ASP.NET MVC 4多租户

我需要的是真正的多租户。每个用户只能访问他们自己的记录,除用户帐户以外的所有记录都应由个人用户拥有。

在流浪汉(http://hobocentral.net),它是一个Rails插件,这很容易通过添加以下代码行中我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 

是否somethi ng是如此简单而优雅的存在,还是内置于ASP.NET MVC?到目前为止,我已经找到了几种在ASP.NET MVC中实现多租户的方法,但我不确定哪种方法是正确的。如果有帮助,我也打算使用.NET 4.5和Entity Framework 5。

回答

-2

如果你使用任何类型的内置认证在asp.net MVC那么它已经存在,你可以使用类似

HttpContext.Current.User.Identity.Name 

,如果你不使用某种内部身份验证机制,那么你可以做我认为用户将主键保存在session变量中时所做的简单操作。

Session["User"] = Key; 

和每个控制器内取出变量

var key = Session["User"]; 

和retrive基于关键

+1

用户数据加上你也可以认为写一个简单的模型绑定器的已经自动加载信息没有使用魔法字符串 – Iridio 2012-07-23 12:25:56

+0

谢谢。一行代码“HttpContext.Current.User.Identity.Name”并不真正告诉我如何创建多租户应用程序。有教程,代码示例等吗? – Jeremy 2012-07-23 16:41:13

+0

我同意Jeremy的看法,这个答案并没有试图说明如何做真正的多租户。皮肤有很多种方法去皮肤,但这个答案不是其中之一。 – 2013-02-11 11:56:34