2010-04-20 75 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