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

时间:2010-11-24 12:07:31

标签: apache spring tomcat spring-security

我正在使用spring框架,apache,tomcat 并使用spring security处理登录页面 我有一个问题 每次第一次向登录页面发出请求都会为用户生成一个新会话,我知道这是默认行为,当您访问登录页面时,会为您创建一个新会话,那么如果在登录页面上进行了大量加载会怎么样?在页面中,太多用户只是在没有做任何事情的情况下查看登录页面,因此这里创建了太多未使用的会话。 你们怎么想只是一个问题,我知道它很少见,但它可能会发生,如何应对呢?

1 个答案:

答案 0 :(得分:2)

我认为这不罕见。一种可能的解决方案是将会话超时设置为最小值。例如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);
}

另一个好建议是过滤像谷歌机器人这样的抓取工具。 “Bot Detection”是一个很好的关键词。