java—如何检查用户是否已登录或未使用会话Struts2

roqulrg3  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(273)

我在做struts2。我使用下面的代码检查用户是否已登录

public String execute()
{
   HttpServletRequest request = ServletActionContext.getRequest();
   HttpSession        session = request.getSession(false);

   System.out.println(session);

   if(session == null)
   {
      return "UserLoggedIn";    
   }

   return "success";
}

当我第一次在控制台中访问print会话值时,它会打印null。但是当我通过刷新页面来做同样的事情时,它会打印一些类似于下面的内容,并最终允许用户在没有登录的情况下访问页面。

org.apache.catalina.session.StandardSessionFacade@16f21478

如何执行会话检查以查看用户是否登录。
非常感谢你。

b1zrtrql

b1zrtrql1#

如果你只是出于学习的目的,我相信最好是在 session ,一旦用户登录。
例如,当使用click login按钮时,如果用户提供的凭据正确,您可以将变量(已登录)存储到会话中,单击logout按钮可以清除此变量。
不过,你需要注意的事情很少。
用起来更好 SessionAware struts2提供的接口,这是一种将会话作为Map注入操作类的干净方法。

public class YouAction implements SessionAware{
    private Map<String, Object> sessionMap;
      @Override
        public void setSession(Map<String, Object> sessionMap) {
            this.sessionMap = sessionMap;
        }
    }

通过上述方法,您可以独立于http对象的直接依赖项执行操作,这对单元测试很有帮助。
如果您有选择,可以使用springsecurity,这是处理用户身份验证和授权过程的更好方法。

vtwuwzda

vtwuwzda2#

当用户登录时,在会话中放入一个变量。当注销时,从会话中清除该变量。
然后在会话中检查该变量。

相关问题