2010-04-20 74 views
0

我在谷歌應用程序項目上設置了會話處理。這應該允許我的用戶跨頁面登錄和維護狀態。我只是把它變成默認的問候服務嘗試一下:使用gwt和app引擎安全地發送密碼?

public class GreetingServiceImpl extends RemoteServiceServlet implements GreetingService { 
    public void sessionTest(String username) { 
     HttpSession session = getThreadLocalRequest().getSession(false); 
     session.setAttribute("username", username); 
    } 
} 

然後試圖將其拉出我的目標project.jsp頁:

<% 
String username = null; 
HttpSession mysession = request.getSession(false); 
if (mysession.getAttribute("username") != null) { 
    username = (String)mysession.getAttribute("username"); 
} 
else { 
    username = "(not logged in yet)"; 
} 

<p>You are: 
<%= username %> 
</p> 
%> 

它的工作原理,但我不知道如何安全地在sessionTest()中發送數據。如果我也在那裏發送用戶的密碼,它將是明確的。

這將是好(我認爲),如果我使用的是https,但谷歌應用程序引擎不允許你在自定義域(如www.mysite.com)下使用https,他們必須在(mysite。 appspot.com)域。

我有點卡在這裏 - 我們如何安全地發送密碼?如果我使用的是PHP,我想我可以使用摘要身份驗證(我在這裏不是很有經驗) - 我們可以使用gwt + gae做類似的事嗎?

感謝

+0

您有沒有原因不使用App Engine中提供的現有用戶服務?登錄是一個解決的問題,你絕對不會比Google做得更好。或者您可以等待來自App Engine的官方OAuth支持,這是他們的路線圖:http://code.google.com/appengine/docs/roadmap.html – 2010-04-21 02:45:54

+0

嗨,是的,理由是,並非每個用戶都會有一個Gmail帳戶登錄,一些用戶不想註冊一個Gmail帳戶只是爲了使用我的應用程序。我知道內置的東西很好,但它不適合我的用戶。 – user246114 2010-04-21 03:23:14

回答

0

會話數據存儲在服務器上,而不是在客戶端上 - 只有一個不透明的令牌發送到客戶端,以確定客戶端的會話。

也就是說,你可能不應該在會話中存儲用戶的密碼 - 你爲什麼要這麼做? - 或者說,確實是一目瞭然。

+0

嗨,是的完全同意,但在某些時候'註冊'或'登錄',用戶密碼需要被髮送到服務器,至少一次。此後,可以使用不透明的會話ID來代替周圍發送密碼。這是我想知道保護的一次。我在路線圖中看到第三方網站的https在甲板上,所以應該解決這個問題。 – user246114 2010-04-21 11:55:36