代码之家  ›  专栏  ›  技术社区  ›  Mahmoud Saleh

访问登录页时创建的会话太多?

  •  3
  • Mahmoud Saleh  · 技术社区  · 15 年前

    我使用的是spring框架、apache、tomcat 登录页面由spring security处理 我有个问题 每次对登录页面的请求都会为用户生成一个新会话,我知道这是默认行为,当您访问登录页面时,会为您创建一个新会话,然后如果登录页面上的负载很大,太多用户只是查看登录页面而什么也不做,这里创建了太多未使用的会话。 你们觉得这个问题怎么样,我知道很少见,但可能会发生,怎么处理?

    1 回复  |  直到 15 年前
        1
  •  2
  •   scheffield    15 年前

    我认为这并不罕见。一种可能的解决方法是将会话超时设置为最小值。例如5分钟。此外,如果用户已经存在会话,则可以编写一个过滤器来增加会话超时。因此,普通用户的会话超时为30分钟,而只访问一侧的用户的会话超时为5分钟。

    这里有一个过滤器,可以给你的小把戏加药:

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
    
        HttpServletRequest httpRequest = (HttpServletRequest)request;
    
        // The false is important, otherwise a new session will be created.
        HttpSession session = httpRequest.getSession(false);
    
        if (session == null) {
            chain.doFilter(request, response);
            return;
        }
    
        session.setMaxInactiveInterval(30 * 60);
        chain.doFilter(request, response);
    }
    

    另一个好的建议是过滤像google bot这样的爬虫程序。”机器人检测”是一个很好的关键字寻找。

    推荐文章