>  Q&A  >  본문

java - AJAX 请求时,SpringMVC 拦截器无法获得 session 中的值

拦截器代码(想实现的功能就是如果当前 Session 中有 user,那么就可以访问页面和使用 AJAX 请求):

public class UserLoginInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler) throws Exception {

        HttpSession session = request.getSession();
        if (session.getAttribute("user") != null) {
            return true;
        }

        request.getRequestDispatcher("/WEB-INF/views/page/user/login.jsp").forward(request, response);

        return false;
    }

}

该拦截器拦截了所有的方法(/**),对于返回 ModelAndView 的控制器方法对应的路径,拦截器可以正常获得 session 的值;但是对于 AJAX 访问的控制器方法(被 @ResponseBody 注解的方法)对应的路径,拦截器却无法获得 session 的值。请问这是什么原因呢,解决办法是什么?

大家讲道理大家讲道理2715일 전802

모든 응답(1)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-18 10:50:55

    SpringMVCajax 요청을 가로채면 response.sendRedirect이(가) 정상적으로 점프할 수 없습니다. ajax 요청인지 판단할 수 있는 경우, 프론트 데스크에 메시지를 회신하시면 프론트 데스크에서 해당 메시지를 수신한 후 로그인 페이지로 이동합니다.

    으아악

    회신하다
    0
  • 취소회신하다