java - AJAX 请求时,SpringMVC 拦截器无法获得 session 中的值
大家讲道理
大家讲道理 2017-04-18 10:48:55
0
1
876

拦截器代码(想实现的功能就是如果当前 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 的值。请问这是什么原因呢,解决办法是什么?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(1)
小葫芦

Lorsque

SpringMVC intercepte la demande ajax, response.sendRedirect ne peut pas sauter normalement. Vous pouvez déterminer s'il s'agit d'une demande ajax. Si tel est le cas, renvoyez un message à la réception, et la réception accédera à la page de connexion après l'avoir reçu.

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

    HttpSession session = request.getSession();
    if (session.getAttribute("user") != null) {
        return true;
    }
    // 如果是ajax请求,请求头会有x-requested-with
    String requestWith = request.getHeader("x-requested-with");
    if (requestWith != null && requestWith.equalsIgnoreCase("XMLHttpRequest")){
        ServletOutputStreamout = rep.getOutputStream();
        out.print("unlogin");//返回给前端页面的未登陆标识
        out.flush();
        out.close();
    } else {
        response.sendRedirect("/WEB-INF/views/page/user/login.jsp");
    }
    return false;
}
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!