2011-05-10 60 views
0

背景:
我正在使用傳統的ASP.NET 3.5 Web Forms應用程序。該應用程序允許用戶購買爲他們生成的'白標'網站的訂閱,並且他們可以進一步定製它。它使用表單身份驗證。.NET Web Forms在同一個帳戶下的多個產品訂閱?

一個典型的用例是用戶在我們的系統上創建一個帳戶,購買一個網站,然後繼續定製他們的網站。他們將用來編輯他們購買的網站的URL如下所示:https://www.example.com/EditWebsite.aspx。我們的網站編輯工具箱中還有許多其他網頁與其他網址。

問題:
我的團隊已責成與允許人們使用一個帳戶來訪問多個網站訂閱。這意味着如果使用上面提到的URL,一個經過身份驗證的用戶可能會嘗試訪問多個網站中的一個網站進行編輯。我們的系統可以讓每個用戶瞭解多個subscriptionIds,但網站編輯器的web應用程序只支持一個訂閱。

用一個更簡單的例子來說明:這就好像谷歌突然允許你用一個GMail帳戶查看兩個不同的收件箱。如果兩者的網址相同,系統如何知道您試圖訪問的是哪一個?

我們最初想要改變應用程序使用像這樣的網址:https://www.example.com/[subID]/EditWebsite.aspx這將給我們所有的信息,我們需要發送用戶到正確的網站。我們研究了URL Routing來完成這個任務,但似乎我們必須更改所有的Web應用程序的內部鏈接才能使用路由配置來生成正確的URL。也許我們在這裏有錯誤的想法,但對於遺留應用程序來說似乎工作太多了。

我們想出的另一個潛在解決方案是使用我們系統的控制面板web應用程序(點擊鏈接編輯他們的任何網站)來設置會話cookie,我們的編輯網站web應用程序可以讀取該會話cookie以瞭解哪個網站帶來。這有一個缺點,即頁面不能書籤,並且不能一次在同一瀏覽器的不同標籤中查看多個網站。

問題(S):
有我們沒有調查任何其他選項或思想的?是否有任何其他網站允許這種行爲;他們如何處理它? URL路由是正確的方式來做到這一點,我們只需要冒險?

任何輸入讚賞!

+0

嗯,在這個問題上缺乏活動讓我覺得其他人就像我們在這個問題上一樣難住...... :( – 2011-06-14 16:44:08

回答

0

我們最終使用的解決方案是在鏈接中添加一個URL參數,該參數指定您嘗試編輯哪個網站。

https://www.example.com/EditWebsite.aspx?subID=123 

該參數包含在列出所有用戶網站的頁面的「編輯網站」鏈接中。

當存在時,它爲用戶設置會話cookie。如果請求參數不存在,應用程序將查找正在設置的cookie;這將處理應用程序內的所有內部鏈接。如果cookie不存在且請求參數未設置,我們只需從列表中選擇經過身份驗證的用戶的第一個訂閱。

這並不完美,但迄今爲止它一直沒有問題。它造成的唯一後果是用戶不能在同一瀏覽器會話中編輯多個網站,例如,使用多個選項卡。這還沒有導致任何支持問題,但它幾乎不是問題。

相關問題