2010-11-24 4 views
3

스프링 프레임 워크, 아파치, 톰캣 을 사용하고 있습니다. 로그인 페이지는 봄 보안 으로 처리되며, 처음으로 로그인 페이지에 대한 요청이 사용자에게 새로운 세션을 생성하고 있다는 것을 번으로 알리는 문제가 있습니다. 기본 동작, 로그인 페이지에 액세스 할 때 새 세션이 만들어지면 로그인 페이지에서 큰로드가 발생하면 너무 많은 사용자가 아무것도하지 않고 로그인 페이지를 보는 것입니다. 너무 많은 사용되지 않은 세션 여기에 만들어집니다. 너희들은 쟁점에 대해 어떻게 생각 하느냐? 나는 드물다는 것을 안다.하지만 어떻게 될까?로그인 페이지에 액세스 할 때 세션이 너무 많습니까?

답변

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); 
} 

또 다른 좋은 조언은 구글 봇과 같은 크롤러를 필터링 할 수 있습니다 : 여기

트릭을 투약하는 필터입니다. "봇 탐지"는 찾아야 할 좋은 키워드입니다.

+0

로그인 한 사용자가 이미 세션이 있고 5 분 동안 유휴 상태가 되어도 세션이 삭제됩니다. –

+0

예, 사용자가 한 번만 요청하면 가능합니다. 이후의 요청은 제한 시간을 30 * 60 초로 연장합니다. – scheffield

+0

위대한, 내가 가진 다른 응용 프로그램에서 또 다른 문제가, 거기에 너무 많은 시간을 관리하는 방법 0, 많은 세션이 있습니까? –

관련 문제