簡體   English   中英

設計支持SubSites的ASP.NET應用程序

[英]Designing an ASP.NET app that supports SubSites

我正在設計一個必須支持'SubSites'的ASP.NET應用程序。

我們的想法是讓超級管理員管理所有用戶,全局應用程序設置和子站點。 每個子網站都有一些自己的設置(例如本地管理員,徽標和歡迎消息),每個SubSite都有自己的注冊用戶列表。

這與使用諸如Joomla,SharePoint或DotNetNuke之類的CMS非常相似。 事實上,我很想使用這樣的平台,但其他項目要求阻止我這樣做。

我的問題在這一點上非常籠統:

  1. 使用ASP.NET 2.0 Membership我如何指定一個超級管理員並根據他們注冊的SubSite對用戶進行分類
  2. 我如何實現SubSites(應該使用哪些模式等) 我特別感興趣的是解釋其他人如何做到這一點的文章。 我想學習其他人已經獲得的最佳實踐,而無需花費數天時間深入研究像DotNetNuke這樣的大型開源項目的源代碼。

我在ASP.NET MVC 1.0中實現了這一點,所以類似的例子將是最有幫助的。


更新:我喜歡Mike Hadlow如何實施多租戶 ,我決定以他的工作為出發點。 有關我如何使用SqlMembershipProvider以及每個租戶擁有自己的獨立數據庫的信息,請參閱此帖子 這解決了我的“基於子網站”問題的成員資格。

你正在嘗試的東西通常被稱為“ 多租戶 ”,而非“子網站”

有一個類似的問題 ,接受的答案聽起來似乎有道理。

請原諒我,如果我不明白“子網站”是什么意思,您是否使用該術語來指代在大型主站點中創建迷你站點的想法? 如果是這樣,我想我明白你想做什么,但我不得不說asp.net 2.0中的Membership系統是一個非常多的框架,你需要在其中運行來創建你想要的東西。

無論如何, 將如何做(這是基於開箱即用的.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 something

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM