北京网站开发多少钱,网站设计结果,网页制作与设计考试,百竞网站建设一、背景 我们需要在客户端访问服务器的时候给定用户一定的操作权限#xff0c;比如没有登陆时就不能进行其他操作。如果他需要进行其他操作#xff0c;而在这之前他没有登陆过#xff0c;服务端则需要将该请求拦截下来#xff0c;这就需要用到过滤器#xff0c;过滤器可以…一、背景 我们需要在客户端访问服务器的时候给定用户一定的操作权限比如没有登陆时就不能进行其他操作。如果他需要进行其他操作而在这之前他没有登陆过服务端则需要将该请求拦截下来这就需要用到过滤器过滤器可以完成一些登录校验、统一编码处理、敏感字符处理等操作。 
二、分析 三、实现  
3.1 准备工作JWT令牌实现登陆校验-CSDN博客 
3.2 准备依赖:在pom.xml中添加以下依赖这个包可以快速将object对象转成json格式。 dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.76/version/dependency 
3.3 目录结构新建filter包以及包下LoginFilter类  3.4  LoginFilter.java注意必须添加WebFilter(urlPatterns  /*)这是Java中过滤器的标记 
package com.bytedance.filter;
import com.alibaba.fastjson.JSONObject;
import com.bytedance.pojo.Result;
import com.bytedance.utils.JwtUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
Slf4j
WebFilter(urlPatterns  /*) // 注意这里必须要添加
public class LoginFilter implements Filter {Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {HttpServletRequest req  (HttpServletRequest) request;HttpServletResponse resp  (HttpServletResponse) response;// 1.获取请求的urlString url  req.getRequestURL().toString();log.info(请求的url:{},url);// 2.判断url中是否包含login如果包含则放行if (url.contains(login)){log.info(登陆操作放行);chain.doFilter(request, response);return;}// 3.获取请求头中的令牌String jwt  req.getHeader(token);// 4.判断令牌是否存在if (!StringUtils.hasLength(jwt)){log.info(请求头为空返回未登录信息~);Result error  Result.error(NOT_LOGIN);// 手动转换 对象-json 引入阿里巴巴fastjson依赖String noLogin  JSONObject.toJSONString(error);resp.getWriter().write(noLogin);return;}// 5.令牌存在校验try {JwtUtils.parseJWT(jwt);}catch (Exception e){ // jwt解析失败e.printStackTrace();log.info(解析令牌失败返回未登录错误信息);Result error  Result.error(NOT_LOGIN);// 手动转换 对象-json 引入阿里巴巴fastjson依赖String noLogin  JSONObject.toJSONString(error);resp.getWriter().write(noLogin);return;}// 6.放行log.info(放行);chain.doFilter(request,response);}
}3.5 启动类除此之外在启动类中必须添加注解ServletComponentScan