| | |
| | | package org.example.util; |
| | | |
| | | import cn.hutool.json.JSONUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import org.example.pojo.User; |
| | | import org.example.server.UserService; |
| | | import org.example.server.impl.UserServiceImpl; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.web.servlet.HandlerInterceptor; |
| | | import org.springframework.web.servlet.ModelAndView; |
| | | |
| | |
| | | * @description: |
| | | * @create: 2024-07-29 11:15 |
| | | **/ |
| | | @Component |
| | | public class LoginInterceptor implements HandlerInterceptor { |
| | | |
| | | @Override |
| | | public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) |
| | | throws Exception { |
| | | |
| | | HttpSession session = request.getSession(); |
| | | |
| | | // 假设登录状态信息保存在 session 中,这里简单示例,实际项目中可能会有自己的登录状态判断逻辑 |
| | | if (session.getAttribute("loggedInUser") != null) { |
| | | String token = null; |
| | | // 如果是 OPTIONS 请求,我们就让他通过,不管他 |
| | | if (request.getMethod().equals("OPTIONS")) { |
| | | response.setStatus(HttpServletResponse.SC_OK); |
| | | return true; |
| | | }else { |
| | | token = request.getHeader("token"); |
| | | } |
| | | if(null == token){ |
| | | // 未登录,返回未授权错误码或重定向到登录页 |
| | | response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); // 返回 401 未授权状态码 |
| | | response.setCharacterEncoding("UTF-8"); |
| | | response.getWriter().write("请登录"); |
| | | return false; |
| | | } |
| | | User user = JwtUtil.verify(token); |
| | | if(null == user){ |
| | | // 未登录,返回未授权错误码或重定向到登录页 |
| | | response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); // 返回 401 未授权状态码 |
| | | response.setCharacterEncoding("UTF-8"); |
| | | response.getWriter().write("请登录"); |
| | | return false; |
| | | } |
| | | |
| | | if (user.getIsRoot() == 1) { |
| | | // 已登录,允许请求继续 |
| | | return true; |
| | | } else { |
| | | // 未登录,返回未授权错误码或重定向到登录页 |
| | | response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); // 返回 401 未授权状态码 |
| | | response.setCharacterEncoding("UTF-8"); |
| | | response.getWriter().write("请登录"); |
| | | return false; |
| | | } |
| | | } |