我在做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
如何执行会话检查以查看用户是否登录。
非常感谢你。
2条答案
按热度按时间b1zrtrql1#
如果你只是出于学习的目的,我相信最好是在
session
,一旦用户登录。例如,当使用click login按钮时,如果用户提供的凭据正确,您可以将变量(已登录)存储到会话中,单击logout按钮可以清除此变量。
不过,你需要注意的事情很少。
用起来更好
SessionAware
struts2提供的接口,这是一种将会话作为Map注入操作类的干净方法。通过上述方法,您可以独立于http对象的直接依赖项执行操作,这对单元测试很有帮助。
如果您有选择,可以使用springsecurity,这是处理用户身份验证和授权过程的更好方法。
vtwuwzda2#
当用户登录时,在会话中放入一个变量。当注销时,从会话中清除该变量。
然后在会话中检查该变量。