apache - 访问登录页面时创建了太多 session ?

标签 apache spring tomcat spring-security

我正在使用 spring 框架、apache、tomcat 登录页面由 spring security 处理 我有一个问题 每次对登录页面的第一次请求都会为用户生成一个新 session ,我知道这是默认行为,当您访问登录页面时,会为您创建一个新 session ,那么如果登录时负载很大怎么办页面,太多的用户只是查看登录页面而没有做任何事情,所以这里创建了太多未使用的 session 。 你们怎么看待一个问题,我知道这很少见,但它可能会发生,如何处理?

最佳答案

我认为这并不罕见。一种可能的解决方案是将 session 超时设置为最小值。例如5分钟。此外,如果用户的 session 已经存在,您可以编写一个过滤器来增加 session 超时。因此,普通用户的 session 超时时间为 30 分钟,而用户仅访问一侧的 session 超时时间为 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”是一个很好的关键字。

关于apache - 访问登录页面时创建了太多 session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4266576/

相关文章:

php - 无法使用本地主机的 PHP ftp_connect 连接到 FTP

Spring MVC 测试 : How do I check if a model attribute does not exist?

java - 把我所有的 bean 放在不同的文件中

java - 在没有 OAuth 的情况下使用 JWT 安全吗?

java - Tomcat:设置 servlet 的自定义 url(servlet-mapping 与 .war-deployment)

tomcat - 什么是 Tomcat 等同于这些 WebLogic 设置

php - 如何检测 PHP 中的 X-Accel-Redirect (Nginx)/X-Sendfile (Apache) 支持?

python - Apache 上的 Django 与 mod_wsgi CSRF 验证失败

apache - Redmine 2.3.2 svn HTTPs 服务器 SSL 证书不受信任

apache - 找不到 nginx 代理页面