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

建设公司网站应有哪些功能生活分类信息网站大全

建设公司网站应有哪些功能,生活分类信息网站大全,wordpress 制作侧边栏,网站 文件夹结构文章目录 1、登出的实现思路2、集成Redis3、认证成功处理器4、退出成功处理器5、修改token校验过滤器6、调试 1、登出的实现思路 这是目前的token实现图#xff1a; 因为JWT的无状态#xff0c;服务端无法在使用过程中主动废止某个 token#xff0c;或者更改 token 的权限… 文章目录 1、登出的实现思路2、集成Redis3、认证成功处理器4、退出成功处理器5、修改token校验过滤器6、调试 1、登出的实现思路 这是目前的token实现图 因为JWT的无状态服务端无法在使用过程中主动废止某个 token或者更改 token 的权限。也就是说目前一旦 JWT 签发了就只能等它到过期时间才能作废即使用户已经退出登录。想实现登出可以引入Redis 此时关于token的校验逻辑就变成了 总结就是 ① 登陆成功之后把生成JWT存到redis中(同时设置key的TTL和JWT自身过期时间一样) ② 用户退出时从redis中删除该token ③ 用户每次访问时先校验jwt是否合法如果合法再从redis里面取出logintoken:jwt判断这个jwt还存不存在如果不存在就说是用户已经退出登录了 2、集成Redis 引入redis的依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId /dependency 配置连接信息 spring:redis:host: localhostport: 6379database: 0password: 666666 注入redis操作对象的依赖 Resource private StringRedisTemplate stringRedisTemplate; PS我们没有创建RedisTemplate对象对应的bean但这个bean却在我们引入依赖后自动加入到了Spring容器中即自动装配。 3、认证成功处理器 修改前一节的认证成功处理器在向客户端发放token的同时存入rediskey的过期时间和token自身过期时间一致。 ...Resource private StringRedisTemplate stringRedisTemplate; .... stringRedisTemplate.opsForValue().set(logintoken:token,objectMapper.writeValueAsString(authentication),30, TimeUnit.MINUTES); 我这里key设置成了字符串logintoken:后跟token值value则直接序列化认证对象authentication。 注意过期时间和jwt的过期时间保持一致jwt过期时间可查看下创建jwt时的withExpiresAt方法。 4、退出成功处理器 添加退出成功处理器退出后清除redis里存的token /*** 退出成功处理器用户退出成功后执行此处理器*/ Component public class MyLogoutSuccessHandler implements LogoutSuccessHandler {//使用此工具类的对象进行序列化操作Resourceprivate ObjectMapper objectMapper;Resourceprivate StringRedisTemplate stringRedisTemplate;Overridepublic void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {//从请求头中获取Authorization信息String authorization request.getHeader(Authorization);//如果授权信息为空返回前端if(nullauthorization){response.setCharacterEncoding(UTF-8);response.setContentType(application/json;charsetutf-8);HttpResult httpResultHttpResult.builder().code(-1).msg(token不能为空).build();PrintWriter writer response.getWriter();writer.write(objectMapper.writeValueAsString(httpResult));writer.flush();return;}//如果Authorization信息不为空去掉头部的Bearer字符串String token authorization.replace(Bearer , );//redis中删除token这是关键点stringRedisTemplate.delete(logintoken:token);response.setCharacterEncoding(UTF-8);response.setContentType(application/json;charsetutf-8);HttpResult httpResultHttpResult.builder().code(200).msg(退出成功).build();PrintWriter writer response.getWriter();writer.write(objectMapper.writeValueAsString(httpResult));writer.flush();} } 在安全配置类中配置用户成功退出处理器 Resource private MyLogoutSuccessHandler myLogoutSuccessHandler;.... http.logout().logoutSuccessHandler(myLogoutSuccessHandler); http.csrf().disable(); //禁用跨域请求保护 要不然logout不能访问 5、修改token校验过滤器 修改上一节的token校验器JWTCheckFilter不再只校验token的合法性合法时还要校验服务端redis中是否有相应数据以判断是否已经登出。 Resource private StringRedisTemplate stringRedisTemplate;//从redis中获取token String tokenInRedis stringRedisTemplate.opsForValue().get(logintoken: jwtToken); if(!StringUtils.hasText(tokenInRedis)){printFront(response, 用户已退出请重新登录);return; } 完整 6、调试 登录下先 得到token 此时服务端redis 登出时token为空 登出时token错误 正常登出 此时拿登出的token再请求接口
http://www.dnsts.com.cn/news/117798.html

相关文章:

  • 佛山仿站定制模板建站网站手机端自适应
  • 有些网站勤换域名wordpress增加下载量显示
  • 网站 wordpress企业logo设计免费生成器
  • 成都网站建设 公司网站遭到攻击 运维怎么做
  • 网站怎么建设后台建设银行官方网站客户资料修改
  • 辛集网站建设wordpress更新主题后错误500
  • 南昌建站系统外包免费企业黄页
  • 做网站的广告词怎样修改网站模板
  • 网站产品图怎么做免费建站 永久
  • 重庆网站推广网络推广清新县城乡规划建设局网站
  • 数据库网站网站设计的简称
  • 长沙网站制作电话wordpress本地运行
  • 网站如何换域名wordpress上传大图
  • 网站制作公司中企动力推荐南宁网站制作公司
  • 网站开发的可行性研究报告房屋建设设计网站
  • 厦门营销网站制作成都手工活外发加工网
  • 农村建设开发有限公司网站网站建设ppt演示文稿
  • 理财网站如何做推广校园网站建设情况统计表
  • 网站开发需要什么服务器wordpress抢救
  • 域名解析完成网站怎么做什么网站上做推广
  • 网站搭建的费用如何对网站用户分析
  • 寄生虫网站排名代做互联网宣传方式
  • 服装网站建设公司地址温州做网站 掌熊号
  • 网站加seo需要多少钱房地产公司排名前十
  • 黄冈商城网站制作哪家好五金技术支持东莞网站建设
  • 网站开发前端指什么软件app制作下载
  • 石狮建设局网站wordpress附件数据库
  • 建站用什么工具静态网站建设要学什么
  • 河南网站建设路如何设计网站栏目
  • 长春网站建设方案托管购物网站建立