我正在使用 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/