gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 11:58:07 27 4
gpt4 key购买 nike

我想根据登录的用户设置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/

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