我正在开发struts2。我使用下面的代码来检查用户是否已登录
public String execute()
{
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession(false);
System.out.println(session);
if(session == null)
{
return "UserLoggedIn";
}
return "success";
}
当我第一次在控制台中访问打印 session 值时,它打印 null。但是,当我通过刷新页面执行相同的操作时,它会打印如下所示的内容,最终让用户无需登录即可访问该页面。
org.apache.catalina.session.StandardSessionFacade@16f21478
如何进行 session 检查以查看用户是否登录。
非常感谢。
最佳答案
如果您只是出于学习目的而这样做,我相信最好在用户登录后将变量存储在 session
中。
比如说,当使用单击登录按钮时,如果用户提供的凭据正确,您可以将变量(已登录)存储到 session 中,然后单击注销按钮可以清除该变量。
但是,还有一些事情您需要注意。
最好使用 Struts2 提供的 SessionAware 接口(interface),这是一种在操作类中将 Session 作为 Map 注入(inject)的干净方法。
public class YouAction implements SessionAware{
private Map<String, Object> sessionMap;
@Override
public void setSession(Map<String, Object> sessionMap) {
this.sessionMap = sessionMap;
}
}
上述方法让您的操作独立于 HTTP 对象的直接依赖关系,这对于单元测试很有帮助。
如果您可以选择使用 Spring security,这是处理用户身份验证和授权过程的更好方法。
关于java - 如何使用 Session Struts 2 检查用户是否登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16954902/