繁体   English   中英

使用Google App Engine在本地和在服务器上进行会话处理之间的区别

[英]Difference between session handling locally and on server with Google App Engine

我正在使用会话,并已在我的GAE应用程序中启用了会话

<sessions-enabled>true</sessions-enabled>
<async-session-persistence enabled="true" />

我正在使用会话进行简单的用户登录。 在本地,这工作得很好,我的会话将一直保持到我注销为止,并且可以使用有效的会话查看所有“受保护”的页面。

我在appspot上的实时/生产服务器的问题在于它根本无法工作。 登录并进行身份验证时,我将重定向到另一个页面。 该页面检查我是否有有效的会话(使用标准的HttpSession),并且以某种方式失败,然后将我重定向回登录屏幕。

有谁知道为什么它在GAE生产环境中不起作用,而在本地却能正常工作?

这是我用来检查当前会话有效性的代码:

public static boolean isValidSession(HttpServletRequest request) {
    return (request.isRequestedSessionIdValid());
}

更新:我正在创建会话ID,如下所示:

public static void createNewSession(HttpServletRequest request, final String username) {
        HttpSession session = request.getSession(true);
        session.setAttribute("username", username);
    }

在Google App Engine上本地处理会话和在生产环境中处理会话没有区别。 它们在两种环境下均相同。 我能想到的唯一区别是,当您在本地创建会话(例如在“登录”时或之后)创建会话并在会话中设置一些属性(例如用户的访问级别)时,即使属性值更改(例如,它将动态地从登录后已更改的数据库中动态拉出),直到您关闭选项卡并再次登录为止,但是在生产中,如果属性在数据库中发生了更改,然后刷新页面,它将从数据库中获取新值。 嗯,这是我的经验。 希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM