2015-06-11 54 views
0

我有兩個獨立的Web應用程序。可以說app1app2。兩者都託管在具有不同域的不同服務器中。將POST參數傳遞給另一個JSP文件

現在在app1中有一個鏈接。在點擊該鏈接時,我必須使用用戶名和密碼調用app2的登錄頁面並顯示響應。但是,用戶名和密碼不應在URL中可見。

當前的方法:

現在,我通過創建一個iframe並通過用戶名和密碼PARAMS查詢字符串來完成我的任務。

像:www.app2.com/login.jsp?username=abc &密碼= XXX

通過點擊上面的網址,獲取用戶登錄和主頁呈現。

必需的方法

我要打電話與用戶名和密碼後參數另一個應用程序的登錄頁面。我想在服務器端做所有我的東西,而不公開登錄憑證。

注:我能控制的APP1只是我不能調整的APP2代碼。我正在開發使用JSP的app1,struts 1.3。

這兩個應用程序的用戶名和密碼都不相同。 App1是我的應用程序,app2是第三方報告服務。

希望你明白了我的觀點!

+0

@Arvind yaar我不能做任何事情APP2因爲它是一個第三方的SaaS應用程序。它提供報告服務。我爲我的應用創建了不同角色用戶的報告。 –

+0

您是否曾嘗試在app1中使用'method ='post''的表單標記將其提交給app2? – Arvind

回答

0

你要求的是單點登錄。

最好的方法是寫一個應用程序(而不是域)可以讀取的cookie。在app1.domain.com中爲domain.com寫入cookie,並在app2.domain.com中讀取相同內容

更新#1 - 示例.NET代碼 - 儘管問題針對Java,但下面的內容對於傳輸有幫助邏輯

FormsAuthentication.SetAuthCookie(Session["userName"].ToString(), false); 

//Below code modifies the cookie's domain 
System.Web.HttpCookie MyCookie = System.Web.Security.FormsAuthentication.GetAuthCookie(User.Identity.Name.ToString(), true); 
MyCookie.Domain = "abc.com"; 
Response.AppendCookie(MyCookie); 
Response.Redirect("http://subdomain.abc.com/"); 
+0

您可以跨域共享一個cookie。我以.NET代碼片段爲例更新了我的答案(更新#1) –

+0

@ S.Krishna感謝您提供寶貴的答案。根據我的問題,我無法對另一個應用程序(即app2)執行任何操作。它是一個第三方服務,它需要用戶名和密碼,通過get或post。但對於用戶,我不想公開用戶名和密碼。 –

+0

@Arvind我相信你非常清楚的問題。 –

0

您可以使用post方法在另一個頁面中發送參數。爲此,您可以將AJAX POST請求用於其他頁面,並獲取該頁面的響應。

+0

Dar親愛的我不想使用客戶端Ajax或表單提交。因爲我必須通過用戶名和密碼。如果我這樣做,任何人都可以通過view-source或通過查看js文件的代碼來查看用戶名和密碼。如果您在AJAX中使用POST方法,則爲 –

+0

。那麼沒有人可以看到它 –

+0

,但我必須在發佈參數中發送用戶名和密碼。用戶名和密碼是硬編碼的,我不要求用戶提供用戶名和密碼。 –

0

請參考給定here...

的答案,老實說,我會去爲這個...

ServletContext context = this.getServletContext(); 
RequestDispatcher dispatcher = context.getRequestDispatcher("/otherurltoservlet"); 

// change your request and response accordingly like setting the parametrs, body etc 

dispatcher.forward(request, response); 
+0

你能告訴我,我必須通過用戶名和密碼,還有我的第二個應用程序的網址?我只有一個jsp頁面,我必須使用用戶名和密碼作爲後續參數調用另一個應用程序的另一個頁面。 –