1、使用拦截器 

 

       用户每次和后台交互,如果用户长时间未操作,则需要检测用户的登录状态,这样的场景已经是再正常不过了。

  传统的做法可以在每个controller里先判断user的状态,然后再执行业务操作,但这样比较代码不够精简,优雅。

  可以使用最简单的拦截器,如:

  

public class LoginInterceptor extends HandlerInterceptorAdapter {

    private List<String> IGNORE_URI;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
     

        HttpSession session = request.getSession();
        if(session != null && session.getAttribute("login_status") != null){ 
            return true;
        }else{
            response.sendRedirect("/user/login?timeout=true");
            return false;
        }
    }

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        super.postHandle(request, response, handler, modelAndView);
    }

}

  只要我们在登录的时候给session设个值,每次进入方法的时候,都先会执行拦截器中的preHandle()方法,如果session已经失效则重定向到登录页面。

 

   2、使用Shiro的session会话管理

      具体的使用可以看我的另一篇博客:https://www.cnblogs.com/qsymg/p/9836122.html

  

 

  

版权声明:本文为qsymg原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/qsymg/p/9895715.html