gpt4 book ai didi

java - 刷新浏览器时 Web 应用程序中的客户端 session 管理?

转载 作者:行者123 更新时间:2023-12-01 15:44:34 25 4
gpt4 key购买 nike

我正在开发一个Web应用程序。在这个应用程序中我使用了GWT2.3。现在我的问题是关于客户端的 session 。在客户端,我维护了如下所示的 session

public class WorkFlowSessionFactory {
private static HashMap session;

private WorkFlowSessionFactory() {
}

public static HashMap getClientSessionInstance() {
if (session == null) {
session = new HashMap();
}
return session;
}

public static Object getValue(WorkFlowSesisonKey key) {
return getClientSessionInstance().get(key);
}

public static void putValue(WorkFlowSesisonKey key, Object value) {

getClientSessionInstance().put(key, value);
}
public static void remove(WorkFlowSesisonKey key)
{
getClientSessionInstance().remove(key);
}

public static void resetSessionUser(User user) {
session.remove(WorkFlowSesisonKey.LOGGEDIN_USER);
session.put(WorkFlowSesisonKey.LOGGEDIN_USER, user);
}

}

现在登录成功后,我将登录的用户放入客户端 session 以及服务器端如下所示的 session

session.put(WorkFlowSesisonKey.LOGGEDIN_USER, user);

现在,当我刷新浏览器时, session 实例变为空。并且所有 session 变量也为空。

我想到的一种方法是首先刷新,我进行服务器访问以获取登录用户并再次设置客户端 session 登录用户。所以在客户端的许多地方需要登录用户刷新浏览器后即可使用。

但我不确定这是正确的做法。所以请向我推荐这个案例,有什么好的方法吗?提前致谢

最佳答案

是的,访问服务器并查询用户是否已登录是一个可行的解决方案。我可以想到以下解决方案:

  1. 在 onModuleLoad() 方法中访问服务器并检查用户是否仍然登录并将 session 存储在客户端 session 中(按照您的建议)。
  2. 将您的 session 存储在非 volatile 存储中(Cookie 或 HTML5 本地存储)。但请确保您不存储任何密码或敏感数据。存储您的 session 的哈希值或唯一标识符。

无论如何,请确保您阅读并了解 GWT 应用程序中的安全性。这里有两个很好的资源:LoginsecuritySecurity for GWT applications .
重要的规则是永远不要相信客户。 始终检查后端的权限和凭据

关于java - 刷新浏览器时 Web 应用程序中的客户端 session 管理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7343217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com