2010-09-26 10 views
0

我想出了一個有趣的方式來解決以下問題,我想知道是否有更好的方法來實現我的目標。ASP.NET成員資格 - 切換Web.Config中的應用程序名稱是個好主意嗎?

基本上,我創建一個基本的CMS系統,用戶可以根據自己的微型網站註冊並擁有自己的用戶。我正在使用asp.net成員資格api。

我想要一種方法來隔離來自彼此的各種微型網站的用戶,以便通過www.mysite.com/johns-site進行身份驗證的用戶也不會通過www.mysite.com/pauls-site進行身份驗證。

我也想辦法,這樣,如果用戶被註冊爲鮑勃在一個網站上,它不會停止其他用戶註冊爲鮑勃不同的微型到一個用戶名與一個微型關聯。

要做到這一點,我注意到,在ASP成員表的用戶所屬的應用程序。每次收到請求時,我都有一個方法可以根據url在web.config中切換applicationName。

這確實滿足一個簡單的方法我的目標,但感覺有點哈克。是否有另一種方法來切換會員供應商的應用程序?

回答

2

在運行時可以獲取/設置ApplicatioName屬性,但根據下面的MSDN帖子,不推薦使用它,因爲該屬性不是線程安全的,即如果多個用戶同時爲不同的應用程序創建帳戶,可能無法正確分配每個用戶的ApplicationName。

語法:

Membership.ApplicationName = "MyAppName" 

OR

Membership.ApplicationName = "MyAppName"; 

延伸閱讀:

http://msdn.microsoft.com/en-us/library/system.web.security.membership.applicationname.aspx

注:

要更新應用程序代碼中的web.config文件的內容?如果是這樣,那肯定是「哈克」。另外編輯web.config會刪除​​所有活動的會話(如果你的應用程序使用會話狀態當然)。

+0

關於會議的好處。我忘了那個。是否有另一種方式來實現像這樣的共享數據庫中的用戶之間的隔離類型?我想我可以爲每個微型網站創建一個角色,但我仍然無法在不同的微型網站上擁有相同的用戶名。 – mancmanomyst 2010-09-27 00:45:42

+0

如何將命名約定應用於用戶名?例如。 @ johns-site.com或 @ pauls-site.com。我不知道你目前如何分配用戶名,但是我提供了一個非常簡單的解決方法。 – BradB 2010-09-27 09:08:55

0

我同意,這是一個黑客工具,將有可能讓你在某些時候支付。

完成此操作的正確方法將涉及每個virtual directory(或您所說的微型網站),每個網絡定義<membership>元素具有相同的連接字符串,但具有不同的applicationName屬性。

相關問題