2013-08-01 38 views
1

我想創建一個類似功能的Struts2的Web應用程序:網址不同的Web應用程序爲不同的用戶

  • 如果用戶A登錄,那麼他就可以訪問諸如

    http://product.com/a/login.jsp 
    
  • 應用
  • 如果用戶B被登錄,然後

    http://product.com/b/login.jsp 
    

等。

我該如何做到這一點?

這樣做很好嗎?或者我可以使用子域?

+0

*如果A是購買應用程序,然後他就可以像訪問http://product.com/a/login.jsp*應用:EEH?它像Gmail一樣的 –

+0

。如果您有Gmail登錄,那麼您可以使用[email protected]登錄。如果你有你的公司..然後你可以用也登錄..喜歡[email protected] 登錄後檢查URL了時間。網址將是不同的,數據會有所不同,但佈局和外觀是一樣的。 –

+0

然後A和B是用戶,你的句子是「如果AAS購買了應用程序......?」 –

回答

1

我敢肯定它不喜歡的工作:在GMail的(你已經採取爲例)每個用戶將始終被重定向,在登錄後,在同一位置:

https://mail.google.com/mail/

如果啓用谷歌多帳戶登錄,他們將分別存儲不同的登錄憑據服務器端,並使用不同的Cookie的客戶端,使用相同的名稱但不同的路徑:

餅乾的第一個帳號登錄:

Name : S 
Content : gmail=someRandomHash 
Server : mail.google.com 
Path : /mail/u/0 

餅乾的第二帳戶登錄:

Name : S 
Content : gmail=someRandomHash 
Server : mail.google.com 
Path : /mail/u/1 

然後,從一個帳戶切換到另一個時,他們會爲您重定向到一個不同的URL:

1st account mailbox URL

https://mail.google.com/mail/u/0/

第二帳戶郵箱網址

https://mail.google.com/mail/u/1/

一旦他們兩人的身份驗證,您可以手動簡單地訪問相關網址的不同郵箱之間切換(如果您有多個帳戶,請嘗試)。

結論:谷歌使用不同的休息的網址(命名變量,在這種情況下u:用戶)來區分多個帳戶...對於在同一臺PC。 增值是你可以無需登錄列全國第一和登錄每次到第二多個帳戶之間進行切換。

這有什麼好做分離的URL來處理不同的賬戶在不同的計算機。

+0

其實我的醫院申請state.in州的許多醫院都在那裏。所以在登錄的時候我需要提供醫院的combo.doctor會選擇醫院然後登錄。但我不會不提供醫院的名單在登錄頁面,這就是爲什麼我想要這樣做!我對這種情況瞭解不多。所以,我該怎麼做?子域或網址? –

+0

您應該(在您的數據庫中)獲取元組列表{ID_AUTH,ID_HOSPITAL},並在入口點頁面中檢查它,以解碼您需要爲每個登錄用戶加載哪家醫院。 ID_AUTH是對包含每個用戶的登錄信息(例如ID_AUTH,USERNAME,ONE-WAY-HASHED-PASSWORD)的行的引用,而ID_HOSPITAL是醫院行的ID,您應該在您的後端擁有該ID。這種信息應該由另一個後臺web應用程序或另一個Web應用程序的「管理」部分來完成,或者將其手動放入數據庫中。 –

+1

哇!這是一個解釋的地獄+1 –

0

你必須實現一個過濾器,然後檢查請求並重定向到正確的視圖。

不要使用過時根據https://issues.apache.org/jira/browse/WW-3742

FilterDispatcher(Deprecated) 

我建議:

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 

首先,我說,你將需要請求:

HttpServletRequest request = ServletActionContext.getRequest(); 

然後找到請求URL如下:

String spath = request.getServletPath(); 

現在你解析你的URL,然後轉發到正確的視圖(pages:jsp,html ...)

+0

我是否需要檢查每個被調用的動作?實際上我的佈局和視圖頁面都是一樣的。我正在創建一個擁有1000個客戶端的Web產品,我問的是什麼?對不起,如果它是一個愚蠢的問題,但我很困惑! –

相關問題