java - 如何使用 Session Struts 2 检查用户是否登录

标签 java jsp servlets struts2 struts-1

我正在开发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/

相关文章:

java - JSP 和发送对象

java - 使用 AJAX 和 Java 注销不起作用

linux - 通过从 Linux shell 脚本调用 Servlet 来获取响应

java.lang.NoClassDefFoundError : org/hibernate/Session hibernate jars is set 错误

java - 如何使用 Java 双向读取一个非常大的文本文件的 n 行 block

java - 多选、集合和 Spring 3 web MVC

javascript - 可编辑网格中的组合框

java - request.getParameter 返回什么?

java - 上传时如何向 S3AsyncClient 添加凭据

java - JOptionPane 如何改变标题框的颜色