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

献县城市住房建设局网站炫酷做网站背景图

献县城市住房建设局网站,炫酷做网站背景图,网站建设适合手机,网站怎样做百度推广计划场景:在普通的token颁发和校验中 当用户发现自己账号和密码被暴露了时修改了登录密码后旧的token仍然可以通过系统校验直至token到达失效时间,这肯定是不安全的,所以系统需要token主动失效的一种能力解决方案:我们可以使用redis来实现redis主…
  1. 场景:在普通的token颁发和校验中 当用户发现自己账号和密码被暴露了时修改了登录密码后旧的token仍然可以通过系统校验直至token到达失效时间,这肯定是不安全的,所以系统需要token主动失效的一种能力
  2. 解决方案:我们可以使用redis来实现redis主动失效的的功能
  3. 需求实现逻辑:
    1. 在每次用户登录后颁发token的同时往redis数据库中存储一份颁发给用户的token
    2. 每次每次用户请求时除了解析token外还需要查询redis中是否有当前token有则校验通过,没有则校验失败
    3. 每次用户修改密码后删除redis中当前用所携带的token,从而使旧token无法通过token校验
  4. 代码实现
    1. pom.xml中添加redis坐标
<!--redis坐标--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
2. 配置文件application.yml中配置redis相关信息
spring:data:redis:host: redis所在的ip,本机的redis服务填localhostport: redis服务端口,默认6379password: redis中设置的密码,没有就不需要
3. 颁发token时往redis中存储token
//UserController中添加私有属性stringRedisTemplate并实例化
@Autowired
private StringRedisTemplate stringRedisTemplate;//登录接口中把token存到redis 过期时间3小时
stringRedisTemplate.opsForValue().set(token,token,3, TimeUnit.HOURS);
4. 登录时校验是否redis中有当前token
package org.example.intercopters;import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.example.utils.JwtUtil;
import org.example.utils.ThreadLocalUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;import java.util.Map;@Component //注册拦截器 将其放入ioc容器中
public class LoginInterceptor implements HandlerInterceptor {@Autowiredprivate StringRedisTemplate redisTemplate;//创建登录身份校验拦截器@Override  //请求开始前触发的拦截方法public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//令牌验证String token = request.getHeader("Authorization");//去除token的前缀标记"Bearer "var newToken = token.contains("Bearer ")?token.substring("Bearer ".length()):token;try {**//从redis获取相同的tokenString redisToken = redisTemplate.opsForValue().get(newToken);if(redisToken == null){//redis失效throw new RuntimeException("token失效");}**Map<String, Object> claims = JwtUtil.parseToken(token);//把用户信息存储到ThreadLocal中,tomcat会在每次接口请求时创建一个线程 而ThreadLocal中存储的数据是线程安全的ThreadLocalUtil.set(claims);//放行return true;} catch (Exception e) {//设置响应状态码response.setStatus(401);//设置响应字符集和响应内容response.setCharacterEncoding("UTF-8");response.setContentType("text/html; charset=UTF-8");String errorMessage = "未登录";response.getWriter().write("{\"error\": \"" + errorMessage + "\"}");//不放行return false;}}@Override  //请求完成后触发的拦截方法public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {//清空ThreadLocal中的数据ThreadLocalUtil.remove();}
}
5. 修改密码后删除redis中的token
//修改密码接口中删除redis中对应的token
ValueOperations<String, String> operations = stringRedisTemplate.opsForValue();
operations.getOperations().delete(newToken);
  1. 在本地开发中如果使用本地redis每次开发前还得去启动本地redis,就很麻烦,如果你有一个云服务器就可以本地连云服务器redis就不用每次去启动redis了,下面是实现教程
    1. https://blog.csdn.net/weixin_45695974/article/details/123244011

文章转载自:

http://npQlwxke.fdxhk.cn
http://7PX3FARw.fdxhk.cn
http://XeoojCSf.fdxhk.cn
http://wbIFCgNn.fdxhk.cn
http://7v34o535.fdxhk.cn
http://4Nk5RzI1.fdxhk.cn
http://SBOJqXQ0.fdxhk.cn
http://kvocnMlI.fdxhk.cn
http://CGWE0tbh.fdxhk.cn
http://d6fXEXIF.fdxhk.cn
http://Z4HgMdc1.fdxhk.cn
http://y5KtQZJp.fdxhk.cn
http://jkpx1qf9.fdxhk.cn
http://p2yybbeA.fdxhk.cn
http://TKUP1nwH.fdxhk.cn
http://AwEU883H.fdxhk.cn
http://Agnr4ABC.fdxhk.cn
http://n05CoThV.fdxhk.cn
http://BflzhGy9.fdxhk.cn
http://AcvQoHGr.fdxhk.cn
http://qjOpRyCg.fdxhk.cn
http://Q5LIltK4.fdxhk.cn
http://kfl9YR5M.fdxhk.cn
http://gwb5mSG7.fdxhk.cn
http://xUCjowP8.fdxhk.cn
http://RHr4qMTR.fdxhk.cn
http://YU6fbCEu.fdxhk.cn
http://QVG0G5Ol.fdxhk.cn
http://uI8KeicP.fdxhk.cn
http://LmxobYfc.fdxhk.cn
http://www.dtcms.com/wzjs/675750.html

相关文章:

  • 网站建设分为怎么样做微信公众号
  • 怎么用dw做响应式网站wordpress 获取所有菜单
  • 北京建站模板企业网站网页设计制作教程
  • 辰景青岛网站建设wordpress 询盘插件
  • 网站建设的行业新闻爱上链外链购买交易
  • 怎么自己的电脑做网站网站集约化建设建设成效
  • 网销网站建设流程网站开发需求分析包括什么
  • 网上购物哪个网站最好网络营销做得比较成功的企业
  • 开发网站需要什么技术网站是自己做还是让别人仿
  • 西安市网站网站策划书背景介绍怎么写
  • 国贸行业 网站建设网站建设实践报告3000字
  • 网站页面seo正能量软件不良网站直播
  • 山东省东营市建设局网站wordpress自动生成手机端
  • 免费个人网站模板云南建设厅网站设计
  • 网站建设 单一来源表单标签wordpress
  • 网站都需要什么类别文献综述 php网站开发
  • 找设计公司上哪个网站静态网站怎么优化
  • 农副产品销售网站开发电脑版网页版登录入口
  • 介休城乡建设网站wordpress注册页模板
  • 山东淄博网站建设公司wordpress lovevideo
  • 养生网站建设免费做网站哪种语言好
  • 获取网站开发语言手表网
  • 官方建网站哪个好制作企业网站与app有什么不同
  • 河南建设建设监理协会网站摄影作品网站源码
  • 广安网站开发快速网站建设
  • 做购物网站的素材超市管理系统
  • 怎么创建网站挣钱百度云虚拟主机如何建设网站
  • 黄石网站建设多少钱昆明官网seo诊断
  • 用手机做诱导网站课题网站建设验收总结报告
  • 做物流网站找哪家好重庆网站seo搜索引擎优化