您的位置:首页 > 汽车 > 新车 > 国际业务网站有哪些_专业的深圳app定制开发_大数据推广公司_北京网站seo费用

国际业务网站有哪些_专业的深圳app定制开发_大数据推广公司_北京网站seo费用

2025/5/24 23:31:04 来源:https://blog.csdn.net/qq_26330543/article/details/147223746  浏览:    关键词:国际业务网站有哪些_专业的深圳app定制开发_大数据推广公司_北京网站seo费用
国际业务网站有哪些_专业的深圳app定制开发_大数据推广公司_北京网站seo费用

创建拦截器,即实现HandlerInterceptor 接口

想要使用SpringBoot拦截器,需要先实现 HandlerInterceptor拦截器接口,实现方法参考以下实际代码

package com.mt.visitor.service.interceptor;import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONObject;
import com.mt.visitor.service.controller.CommonController;
import com.mt.visitor.service.entity.HrUserEmp;
import com.mt.visitor.service.utils.AESUtil;
import com.mt.visitor.service.utils.R;
import com.mt.visitor.service.utils.Token;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;public class TokenInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//请求包装:将传入的HttpServletRequest对象包装为BodyReaderWrapper,以便多次读取请求体。HttpServletRequest requestWrapper = new BodyReaderWrapper(request);try {//解析JSON参数:通过getjsonParamByRequest方法从请求中提取JSON参数,并获取其中的tokenJSONObject jsonObject = getjsonParamByRequest(requestWrapper);String token = jsonObject.getString("token");//解密Token:使用AESUtil.decryptStr方法对token进行解密,得到用户信息字符串。String s = AESUtil.decryptStr(token);//转换用户对象:通过JSONUtil.toBean方法将解密后的字符串转换为HrUserEmp对象HrUserEmp user = JSONUtil.toBean(s, HrUserEmp.class);//添加用户到本地变量:调用Token.addUser方法将用户信息存储到本地变量中。Token.addUser(user);//这里返回 true 才会走到控制器,执行控制器方法return true;} catch (Exception e) {//异常处理:如果上述步骤发生异常,则返回token 验证失败的响应信息。e.printStackTrace();response.setCharacterEncoding("UTF-8");response.setContentType("application/json;charset=UTF-8");PrintWriter out = null;try {out = response.getWriter();R failure = R.failure("token 验证失败!");String s = JSONUtil.parse(failure).toString();out.write(s);} catch (IOException ioException) {ioException.printStackTrace();}}return false;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {//用于请求处理之后的的程序,例如调用 Controller 方法之后}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {//用于全部请求处理完成之后的程序(视图渲染完成之后),例如用于资源清理等操作}
}

配置拦截器,即实现WebMvcConfigurer接口

package com.mt.visitor.service.config;import com.mt.visitor.service.interceptor.TokenInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {@Override   //拦截器配置public void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new TokenInterceptor()) //注册上面创建的拦截器.addPathPatterns("/**") //指定要拦截的请求,这里拦截所有请求.excludePathPatterns("/authuserFaceimg") //排除请求}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com