SpringBoot 拦截器直接返回JSON数据

SpringMVCSpringBoot中通常我们使用拦截器来拦截未登录的用户访问后台页面,如果调用接口是通过 Vue 之类的框架,我们后端通常直接返回 JSON,所以可以在拦截器里,将报错通过 response 传过前端。

代码如下

  1. package com.example.sens.Interceptor;
  2. import cn.hutool.json.JSONObject;
  3. import org.springframework.stereotype.Component;
  4. import org.springframework.web.servlet.HandlerInterceptor;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import java.io.PrintWriter;
  8. /**
  9.  * @author 言曌
  10.  * @date 2018-05-03 11:40
  11.  */
  12. @Component
  13. public class SecurityInterceptor implements HandlerInterceptor {
  14.     @Override
  15.     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object o) throws Exception {
  16.         //这里可以根据session的用户是否登录
  17.         if (request.getSession().getAttribute("user") == null) {
  18.             response.setCharacterEncoding("UTF-8");
  19.             response.setContentType("application/json; charset=utf-8");
  20.             PrintWriter out = null;
  21.             try {
  22.                 JSONObject res = new JSONObject();
  23.                 res.put("success"false);
  24.                 res.put("message""用户未登录!");
  25.                 out = response.getWriter();
  26.                 out.append(res.toString());
  27.                 return false;
  28.             } catch (Exception e) {
  29.                 e.printStackTrace();
  30.                 response.sendError(500);
  31.                 return false;
  32.             }
  33.         }
  34.         return true;
  35.     }
  36. }

111

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 博客/Java交流群
  • 资源分享,问题解决,技术交流。群号:590480292
  • weinxin
言曌

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: