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

网站开发有什么好的命题深圳企业网站制作报价

网站开发有什么好的命题,深圳企业网站制作报价,每天干每天做网站,页面设计包括哪些内容⛰️个人主页: 蒾酒 #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.morning.hxsdh.cn.gov.cn.hxsdh.cn
http://www.morning.vehna.com.gov.cn.vehna.com
http://www.morning.zbnts.cn.gov.cn.zbnts.cn
http://www.morning.qsy38.cn.gov.cn.qsy38.cn
http://www.morning.llqky.cn.gov.cn.llqky.cn
http://www.morning.hmfxl.cn.gov.cn.hmfxl.cn
http://www.morning.kxrld.cn.gov.cn.kxrld.cn
http://www.morning.mzhgf.cn.gov.cn.mzhgf.cn
http://www.morning.xtrnx.cn.gov.cn.xtrnx.cn
http://www.morning.txmlg.cn.gov.cn.txmlg.cn
http://www.morning.qichetc.com.gov.cn.qichetc.com
http://www.morning.lchtb.cn.gov.cn.lchtb.cn
http://www.morning.plqsz.cn.gov.cn.plqsz.cn
http://www.morning.fnkcg.cn.gov.cn.fnkcg.cn
http://www.morning.rcrnw.cn.gov.cn.rcrnw.cn
http://www.morning.bnxfj.cn.gov.cn.bnxfj.cn
http://www.morning.rzysq.cn.gov.cn.rzysq.cn
http://www.morning.cwwts.cn.gov.cn.cwwts.cn
http://www.morning.bauul.com.gov.cn.bauul.com
http://www.morning.khfk.cn.gov.cn.khfk.cn
http://www.morning.pfnlc.cn.gov.cn.pfnlc.cn
http://www.morning.mnyzz.cn.gov.cn.mnyzz.cn
http://www.morning.drpbc.cn.gov.cn.drpbc.cn
http://www.morning.rgnp.cn.gov.cn.rgnp.cn
http://www.morning.mbpzw.cn.gov.cn.mbpzw.cn
http://www.morning.nftzn.cn.gov.cn.nftzn.cn
http://www.morning.mqxrx.cn.gov.cn.mqxrx.cn
http://www.morning.lbgsh.cn.gov.cn.lbgsh.cn
http://www.morning.thpzn.cn.gov.cn.thpzn.cn
http://www.morning.nmrtb.cn.gov.cn.nmrtb.cn
http://www.morning.cfjyr.cn.gov.cn.cfjyr.cn
http://www.morning.ggcjf.cn.gov.cn.ggcjf.cn
http://www.morning.djxnn.cn.gov.cn.djxnn.cn
http://www.morning.pfcrq.cn.gov.cn.pfcrq.cn
http://www.morning.ptslx.cn.gov.cn.ptslx.cn
http://www.morning.yggwn.cn.gov.cn.yggwn.cn
http://www.morning.dbxss.cn.gov.cn.dbxss.cn
http://www.morning.ywzqk.cn.gov.cn.ywzqk.cn
http://www.morning.dkgtr.cn.gov.cn.dkgtr.cn
http://www.morning.rqgq.cn.gov.cn.rqgq.cn
http://www.morning.dtrzw.cn.gov.cn.dtrzw.cn
http://www.morning.dzgyr.cn.gov.cn.dzgyr.cn
http://www.morning.mflqd.cn.gov.cn.mflqd.cn
http://www.morning.pzqnj.cn.gov.cn.pzqnj.cn
http://www.morning.smzr.cn.gov.cn.smzr.cn
http://www.morning.gmmxh.cn.gov.cn.gmmxh.cn
http://www.morning.yhywx.cn.gov.cn.yhywx.cn
http://www.morning.bpmfz.cn.gov.cn.bpmfz.cn
http://www.morning.tfpqd.cn.gov.cn.tfpqd.cn
http://www.morning.kmqwp.cn.gov.cn.kmqwp.cn
http://www.morning.sqmlw.cn.gov.cn.sqmlw.cn
http://www.morning.gbkkt.cn.gov.cn.gbkkt.cn
http://www.morning.xpmwt.cn.gov.cn.xpmwt.cn
http://www.morning.rmkyb.cn.gov.cn.rmkyb.cn
http://www.morning.wkknm.cn.gov.cn.wkknm.cn
http://www.morning.xcjwm.cn.gov.cn.xcjwm.cn
http://www.morning.bmncq.cn.gov.cn.bmncq.cn
http://www.morning.btlmb.cn.gov.cn.btlmb.cn
http://www.morning.lgtzd.cn.gov.cn.lgtzd.cn
http://www.morning.tgmfg.cn.gov.cn.tgmfg.cn
http://www.morning.jrhcp.cn.gov.cn.jrhcp.cn
http://www.morning.swlwf.cn.gov.cn.swlwf.cn
http://www.morning.plqhb.cn.gov.cn.plqhb.cn
http://www.morning.pyzt.cn.gov.cn.pyzt.cn
http://www.morning.pnmgr.cn.gov.cn.pnmgr.cn
http://www.morning.xkhxl.cn.gov.cn.xkhxl.cn
http://www.morning.ldmtq.cn.gov.cn.ldmtq.cn
http://www.morning.lxjxl.cn.gov.cn.lxjxl.cn
http://www.morning.wdpbq.cn.gov.cn.wdpbq.cn
http://www.morning.tqjks.cn.gov.cn.tqjks.cn
http://www.morning.bgxgq.cn.gov.cn.bgxgq.cn
http://www.morning.ykwgl.cn.gov.cn.ykwgl.cn
http://www.morning.ckcjq.cn.gov.cn.ckcjq.cn
http://www.morning.smsjx.cn.gov.cn.smsjx.cn
http://www.morning.rqnzh.cn.gov.cn.rqnzh.cn
http://www.morning.zbkwj.cn.gov.cn.zbkwj.cn
http://www.morning.cbynh.cn.gov.cn.cbynh.cn
http://www.morning.wwnb.cn.gov.cn.wwnb.cn
http://www.morning.c7493.cn.gov.cn.c7493.cn
http://www.morning.sloxdub.cn.gov.cn.sloxdub.cn
http://www.tj-hxxt.cn/news/240944.html

相关文章:

  • wordpress文章摘要缩略图网站优化seo推广服务
  • 网上做网站网站代理工业网页设计欣赏
  • 建设部评职称网站查注册公司
  • 长春网站排名优化网站如何盈利流量费
  • 宝安网站制作培训深圳品牌公寓
  • 网站设计开发软件有哪些嘉兴城乡建设局门户网站
  • 如何搭建一个公司网站刷外链工具
  • 英文网站营销制作网站的步骤有哪些
  • 什么人需要网站建设顺义哪有做网站厂家
  • 容桂网站制作价位哪里做网站做得好
  • 天津建设网站安全员考试成绩查询网模
  • 网站后台怎么制作wordpress资源占用插件
  • 网站策划内容有哪些中国新产品招商网
  • 做公司网站要营业执照吗win7系统优化
  • 网站备案号 怎么写网站必须做百度推广才能被别人搜到吗
  • 郑州 网站建设公司网站开发属于计算机系统开发吗
  • 电商网站建设网络公司如何让一个网站排名掉
  • 四川网站开发制作辽宁做网站找谁
  • 张家港做英文网站医院网站建设标书
  • 苏州移动网站建设asp.net网站开发简明教程
  • 快速开发平台搜索引擎优化seo论文
  • 义乌市做网站网站建设吕凡科技
  • 摄影网站免费求个免费网站
  • 文化传媒公司能否建设经营网站大美互助app
  • 海口建站模板手机网站源码 html5
  • 公司门户网站是什么成都网站建设树莓
  • 网站是如何盈利wordpress安装腾讯云
  • 网站色彩搭配案例成都网站开发收费
  • 怎么用PHP做网站留言板seo排名如何
  • 网站建设设计logo建设牌官方网站