java - 在 Struts 2 中根据用户设置 cookie

标签 java cookies struts2

我想根据登录的用户设置cookie。因此,当用户x登录时,他可以看到他输入的名字,如果用户y登录,他会看到他之前输入的名字。我该怎么做呢?因为现在,最新登录的用户就是cookie的值。

我这样验证我的用户:

public class LoginService {
    public boolean verifyLogin(User user){
        if(user.getUserId().equals("userId") && user.getPassword().equals("password")){
            return true;
        }

        if(user.getUserId().equals("random") && user.getPassword().equals("a")){
            return true;
        }
        return false;
    }
}

这就是我在 LoginAction 中设置 cookie 的方法:

public Set<Cookie> getCookies(){
      Set<Cookie> cookies = new HashSet<>();

      Cookie userId = new Cookie("userId", user.getUserId() );
      userId.setMaxAge(60*60*24*365); // Make the cookie last a year!
      userId.setPath("/"); //Make it at root.
      cookies.add(userId);}

这就是我在 FormAction 中设置 cookie 的方法:

 public Set<Cookie> getCookies(){
      Set<Cookie> cookies = new HashSet<>();

      Cookie name = new Cookie("name", userInfo.getName() );
      name.setMaxAge(60*60*24*365); // Make the cookie last a year!
      name.setPath("/"); //Make it at root.
      cookies.add(name); }

最佳答案

您应该为已验证的用户保存 cookie。如果用户首先经过验证,则将其保存到 session 中。然后使用 session 用户提供cookie。像这样,

if (verifyLogin(User user))
  session.put("user", user);

要保存 cookie,首先从 session 中获取用户

public Set<Cookie> getCookies(){
      Set<Cookie> cookies = new HashSet<>();
      User user = (User) session.get("user");
      if (user != null){
          Cookie userId = new Cookie("userId", user.getUserId() );
          userId.setMaxAge(60*60*24*365); // Make the cookie last a year!
          userId.setPath("/"); //Make it at root.
          cookies.add(userId);
      }
      return cookies;
}

要访问 session 映射,您可以使用SessionAware接口(interface)。另一种方法是从操作上下文中获取 session 。

请注意,cookie 是由浏览器共享的。如果您在使用不同用户输入的同时使用相同的浏览器,它将使用相同的 cookie,除非您提供每个 session cookie 实现。

关于java - 在 Struts 2 中根据用户设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28266582/

相关文章:

javascript - 我的 cookie 在 session 之间无法保留?

java - Struts 2 显示标签/单选按钮

java - 将 Web UI 连接到 Apache HBase 的最有效方法是什么?

java - SwingUtilities.updateComponentTreeUI() 方法是否将当前 L&F 设置为所有 super 组件和子组件?

java - 比较不同规范的mp3和wav文件的最佳方法?

asp.net - 在asp.net中使用cookie

javascript - 使用 jQuery Cookie 在浏览器中存储 onclick 事件

java - 尝试在 Dialogflow 上使用 Webhook 动态给出响应时出现 Webhook 响应错误 (206)

java - 我如何在 Struts 2 操作重定向中使用动态参数名称?

java - 使用 Apache Tiles 时 Struts2 中的命名空间问题