【问题标题】:GWT and AppEngine User ServiceGWT 和 AppEngine 用户服务
【发布时间】:2011-09-24 20:31:08
【问题描述】:

我正在使用 GAE 用户服务来验证我的 GWT 应用程序。 根据用户是否登录,用户会显示 LoginPage/Dashboard。

GWT 应用程序调用 Auth Servlet (Window.Location.assign("/googleauth"); 导致应用程序卸载,然后将控制权转移到 Google 身份验证页面,在身份验证后我们被重定向到 CallBack servlet。

我可以在 Callback Servlet 中检查用户是否登录成功。但是,如果我只是重定向回我的应用程序,会话登录就会丢失。

应用程序从头开始加载。

如果我设置了一个 cookie-->

HttpSession 会话 = request.getSession(); 字符串 sessionid = session.getId(); //获取会话ID 服务器对您登录的响应 要求 Cookie cookie=new Cookie("sid",sessionid); response.addCookie(cookie); response.sendRedirect(AppURL.getApplicationBaseURL());

在我的客户端代码中检查 -->

字符串会话ID = Cookies.getCookie("sid"); if(sessionID!=null) { //显示 仪表板}

我使用的方式安全吗? cookie 的有效期是多久?

【问题讨论】:

    标签: google-app-engine gwt


    【解决方案1】:

    你说:

    I simply redirect back to my application the session login is lost.
    

    这不应该发生。登录后,会话应该一直存在,直到您注销或会话超时(您可以在 GAE 设置中进行设置)。

    您可以简单地对服务器进行 GWT-RPC 调用并检查用户是否已登录:UserServiceFactory.getUserService().isUserLoggedIn()

    注意:如果您正在寻找会话 cookie,AppEngine 在生产和开发服务器中使用不同的 cookie 名称。它在生产中使用ACSID cookie 和dev_appserver_login

    【讨论】:

    • 是的,我只是使用 response.sendRedirect("");我进行了 GWT RPC 调用,但我的用户登录错误。App Engine 设置的 Cookie 过期时间设置为 1 天
    • 尝试在 CallBack servlet 和您的 GWT 页面上检查 ACISD(或 dev_appserver_login)cookie 的值。还要检查 ACSID cookie 的路径(在浏览器中)。
    • 我正在使用与您类似的设置:我有一个 GWT 页面,它会在需要时转发到登录页面。登录页面是 JSP (OpenID),选择它会转发到 Google 登录页面。登录后,Google 会直接重定向回我的 GWT 页面。我没有像你一样的中间回调页面。一切都按预期工作。
    • 我的流程正是——> myapp 然后到 myapp/googleauth 然后是 google services 然后是 myapp/callback 然后我重定向回 myapp。这一刻,如果我检查登录,我会得到错误
    • 我没有 myapp/callback。我将返回 url 直接设置为 myapp。
    猜你喜欢
    • 2012-03-09
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多