我正在设计一个必须支持“子站点”的ASP.NET应用程序。
其想法是拥有一个超级管理员管理所有用户,全局应用程序设置和SubSites。每个子网站都有自己的一些设置(例如本地管理、徽标和欢迎消息),每个Subsite都有自己的注册用户列表。
这与使用诸如Joomla、SharePoint或DotNetNuke之类的CMS非常相似。事实上,我很想使用这样的平台,但是其他的项目需求阻止了我这样做。
在这一点上,我的问题非常笼统:
我是在ASP.NET MVC1.0中实现这一点的,所以类似的例子将非常有用。
更新:,我喜欢Mike实现了多租户和我决定把他的工作作为起点。有关我如何在每个租户拥有自己的这个职位的情况下使用SqlMembershipProvider的信息,请参见SqlMembershipProvider。这解决了我的会员“基于子网站”的问题。
发布于 2009-05-21 01:39:59
您所尝试的更常见的是"多租",而不是“子站点”。
这个问题有一个相似问题,这个被接受的答案听起来是可信的。
发布于 2009-05-20 22:33:07
如果我不明白“子站点”是什么意思,请原谅我,你是用这个词来指在大师网站内创建迷你网站的想法吗?如果是这样的话,我想我理解您想要做什么,但我不得不说,asp.net 2.0中的成员系统是一个非常需要操作的框架,您需要在其中操作才能创建您想要的。
无论如何,我将如何做到这一点(这是基于.net成员身份被开箱即用):
ASP.NET允许您将“角色”附加到用户,“配置文件”属性也可以附加到这些用户。配置文件用于将诸如“电话号码”和其他元数据等内容附加到用户,但您也可以使用它将他们的家庭‘子站点’附加到他们身上。
我将创建一个名为“globaladmin”的角色,将自己创建为一个用户,然后将您(只有您)分配给该角色。然后,我将创建一个'siteadmin‘角色,并将每个子站点的管理用户分配给该角色,但是要非常小心地为他们分配一个“站点”配置文件条目,它的值对应于他们管理的站点。
例如,'user123‘将分配给'siteadmin’角色,它们的'site‘配置文件属性可能是'subsitexyz’。然后,他们将被确定为该网站的管理员。
上面的内容是可行的,但是如果您真的想使其尽可能流畅,将创建您自己的MembershipProvider (SubsiteMembershipProvider),并创建一个新的SubsiteMembershipUser类,该类继承自新提供程序返回的MembershipUser。然后,您可以将自己的属性添加到应用程序可以查询的SubsiteMembershipUser中,以找出用户属于哪个站点:
//get current logged on user - cast it to our custom membership user object
SubsiteMembershipUser thisUser = (SubsiteMembershipUser)GetUser();
if(thisUser.SubsiteName == SiteUserIsBrowsingString
&& Roles.IsUserInRole(thisUser.UserName, "siteadmin"))
//user is admin for this site so do somethinghttps://stackoverflow.com/questions/890518
复制相似问题