当前位置: 首页 > news >正文

网站开发有什么好的命题网站建设公司目标客户

网站开发有什么好的命题,网站建设公司目标客户,网站制作公司有没有版权,wordpress html5 视频播放⛰️个人主页: 蒾酒 #x1f525;系列专栏#xff1a;《spring boot实战》 #x1f30a;山高路远#xff0c;行路漫漫#xff0c;终有归途。 目录 写在前面 流程分析 需要清楚的 实现步骤 1.定义拦截器 2.创建拦截器链配置类 3.配置拦截器链顺序 4.配置拦截…  ⛰️个人主页:     蒾酒 系列专栏《spring boot实战》 山高路远行路漫漫终有归途。 目录 写在前面 流程分析 需要清楚的 实现步骤 1.定义拦截器 2.创建拦截器链配置类 3.配置拦截器链顺序 4.配置拦截排除项 最后 写在前面 本文介绍了spring boot后端服务开发中有关如何设计拦截器的思路坚持看完相信对你有帮助。 同时欢迎订阅springboot系列专栏持续分享spring boot的使用经验。 流程分析 用户在进行登陆后服务器会发放token等信息一起返回给前端前端会进行保存那么token里面是携带一些有关用户的身份等信息的用户端在请求后端时需要在请求头携带token请求先被拦截器截获只有经过多重拦截器校验通过后才可以执行对应功能接口否则会抛出异常返回对应错误信息。 需要清楚的 每次登录都要刷新token信息不能在用户访问的过程中token过期只要用户访问token就要刷新有效期。如果token正确解析token中的用户id,根据用户id查询用户信息。 实现步骤 总的来说大致分为4步 1定义拦截器---2创建拦截器链配置类---3配置拦截器链顺序---4配置拦截排除项 1.定义拦截器 首先需要定义第一个拦截器类该拦截器类需要实现 Spring 框架提供的 HandlerInterceptor 接口。该拦截器只做一件事就是刷新token。 import cn.hutool.json.JSONUtil; import com.mijiu.commom.util.JwtUtils; import com.mijiu.commom.util.UserHolder; import com.mijiu.entity.User; import io.jsonwebtoken.Claims; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.lang.Nullable; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor;import java.util.Objects; import java.util.concurrent.TimeUnit;/*** author mijiupro*/ Slf4j Component public class RefreshTokenInterceptor implements HandlerInterceptor {private final JwtUtils jwtUtils;private final StringRedisTemplate stringRedisTemplate;public RefreshTokenInterceptor(JwtUtils jwtUtils, StringRedisTemplate stringRedisTemplate) {this.jwtUtils jwtUtils;this.stringRedisTemplate stringRedisTemplate;}Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 1、从请求头中获取tokenString authorizationHeader request.getHeader(authorization);if (StringUtils.isBlank(authorizationHeader)) {return true;}// 2.解析tokenClaims claims jwtUtils.parseToken(authorizationHeader);if (Objects.isNull(claims)) {return true;}// 3.获取用户信息Integer userId claims.get(userId, Integer.class);String userInfoJson stringRedisTemplate.opsForValue().get(login:user: userId);if (StringUtils.isBlank(userInfoJson)) {return true;}// 4.刷新tokenString refreshToken jwtUtils.refreshToken(authorizationHeader);response.setHeader(Access-Control-Expose-Headers, Authorization);response.addHeader(Authorization, refreshToken);stringRedisTemplate.expire(login:user: userId, 30, TimeUnit.MINUTES);// 5.将用户信息存入本地线程方便获取User user JSONUtil.toBean(userInfoJson, User.class);UserHolder.setInfoByToken(user);return true;}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Nullable Exception ex) throws Exception {// 清理本地线程UserHolder.clear();} } 值得注意因为有些接口是不需要认证的比如你在商城浏览商品是不是不登录也可以浏览。不登录就没token没token就直接放行认证交给后续的认证拦截器有token就直接刷新不可能你登录了浏览了30分钟突然下单然后告诉你token过期重新登录吧所以登录后调用的每个接口都要走一遍token刷新。最后请求处理完一定要清理一下本地线程不然用户多的时候内存占用会很大。 然后就要实现一个认证拦截器了实现用户身份认证。 import com.mijiu.commom.util.UserHolder; import com.mijiu.entity.User; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; import java.util.Objects;/*** author mijiupro*/Component public class LoginInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {User user UserHolder.getInfoByToken();if (Objects.isNull(user)) {response.setStatus(401);return false;}return true;} } 值得注意在上个拦截器我们是做过解析token了并存在本地线程里面所以只需要判断本地线程有没有即可。 2.创建拦截器链配置类 创建一个配置类用于配置拦截器链。在该配置类中通过实现 WebMvcConfigurer 接口来添加拦截器具体包括 addInterceptors 方法。 import com.mijiu.commom.interceptor.LoginInterceptor; import com.mijiu.commom.interceptor.RefreshTokenInterceptor; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** author mijiupro*/ Configuration public class WebConfig implements WebMvcConfigurer {private final RefreshTokenInterceptor refreshTokenInterceptor;private final LoginInterceptor loginInterceptor;public WebConfig(RefreshTokenInterceptor refreshTokenInterceptor, LoginInterceptor loginInterceptor) {this.refreshTokenInterceptor refreshTokenInterceptor;this.loginInterceptor loginInterceptor;}Overridepublic void addInterceptors( InterceptorRegistry registry) {registry.addInterceptor(refreshTokenInterceptor).addPathPatterns(/**).order(0);//设置拦截器对所有路径生效,执行顺序为0registry.addInterceptor(loginInterceptor).excludePathPatterns(/captcha/graph-captcha)//排除用户登录获取验证码接口.excludePathPatterns(/,*/login,*.html,/images/**,/doc.html,/webjars/**,/swagger-resources,/swagger-resources/**,/v3/**)//排除登录获取静态资源、swagger接口文档等。.order(1);//设置拦截器对所有路径生效,执行顺序为1}Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping(/**) // 对所有路径生效.allowedOrigins(*) //允许所有源地址.allowedMethods(GET, POST, PUT, DELETE) // 允许的请求方法.allowedHeaders(*); // 允许的请求头} } 3.配置拦截器链顺序 刷新token的拦截器要最先执行接着才是认证拦截器 4.配置拦截排除项 像用户登录的验证码接口、登录接口以及像一些静态资源、网页、图片等需要进行拦截排除如果整合了swagger接口文档也是需要排除的。 最后 token拦截器链的设计与实现核心就四步 1定义拦截器---2创建拦截器链配置类---3配置拦截器链顺序---4配置拦截排除项 希望本文对你有帮助。
http://www.hkea.cn/news/14267777/

相关文章:

  • 比较多人用什么网站做推广焦作seo公司
  • 百度收录了我新网站的2篇文章了wordpress 主题应用
  • asp网站源码安装教程上海市建筑工程有限公司
  • 网站域名实名证明网站建设的三网合一
  • 青岛网站设计选哪家怎么做seo网站关键词优化
  • 莒县做网站先申请网站空间
  • 社区论坛自助建站网临海如何制作公司网站框架
  • 健康网站可以做推广吗wordpress仿淘宝
  • 南京网站建设网站设计 雷仁网络和镜像网站做友链
  • 高级seo南通网站推广优化费用
  • 做食品网站需要什么资质银川市建设工程质量监督站网站
  • wordpress 机械模板下载灰色seo关键词排名
  • 成都模板网建站互联网做视频网站需要许可证吗
  • 常州好一点的网站建设蚌埠做网站有哪些公司
  • 郑州的团购网站建设祥云县网站
  • 高唐做网站建设公司WordPress目录存放大小
  • 简单网站模板下载如何选择一个好的优质网站建设公司
  • 网站建设平台ui确认书电子商务网站的功能包括
  • 做门户网站用什么程序本单位门户网站是什么意思
  • 网站使用帮助wordpress设置固定链接
  • 网站iis安全配置wordpress压缩数据库查询
  • 怎么给公司做网站推广浙江网站建设企业
  • 做网站 前端网页制作代码成品
  • 如何把做的网站放到百度上python一句做网站
  • 网站标签布局谷歌商店app下载
  • 优质的专业网站建设在线海报生成
  • 做英文题的网站烟台快速建站有哪些公司
  • 做网站图片不够大如何申请企业邮箱免费
  • 游戏网站开发公司下载的asp网站怎么打开
  • 省级精品课程网站建设网站编辑兼职