采用JWT有效期内刷新Token方案,解决并发请求问题

继前面在Shiro整合JWT+Token过期刷新一文中,已经集成了shiro以及JWT,并且玩儿的开心觉得一切都很自然。然而有一天当看到日志中,同一时间报出了十多条AuthenticationException时,才发现有些东西被忽略了。回顾下我们之前的思路,当服务端在检查到请求的令牌过期之后,会刷新Token重新颁发令牌,并且再次做登录操作,看似平静友好无感知,但试想一下,在页面加载后倘若同一个页面中有多个请求几乎同一时间发起,每一个请求都携带原始令牌,在这样的设计下,就有可能出现在第一个请求到达后刷新了Token,并更改了缓存中的refreshToken的时间戳,以至于剩余请求校验时发现时间戳不一致导致验证失败而在日志中多次打印出当前Token已经失效的log。同时发起的请求越多,log中的异常也就会越多。虽然第一个请求已经刷新了Token,但是其余的请求是失败的,页面中的数据并不完整,显然这是不正常的,那该如何解决呢?... 详情

使用axios的下载,跨域带cookie等问题都总结在这儿了,持续更新

最近一直比较忙碌,年后4个人花了一个半月的时间,撸了一套供应链系统,虽说需求比较清晰,但业务及流程较为繁琐。整体项目依旧采用前后端分离方式,前端使用vue+element的框架。在开发了大量功能后,才遇到了一些实际问题,对前端并不精通只能求助网络,不过仔细看看都不复杂,网上的讲解也都比较详细,所以这里也只简单将使用vue及axios过程中遇到的问题做个总结。... 详情

旅行社接送机信息管理系统 – 案例分享二

自去年1月旅行社接送机系统上线到现在已经稳定运行1年多的时间,在这期间对系统的功能做了很多优化,并也新增了一些重要功能,截止目前已有两家在使用接送机系统进行每日排班,正是因为信息系统的支撑使得平时需要花费几个小时所进行的排班工作变得简单高效。... 详情

Shiro整合JWT+Token过期刷新,全都帮你整好了

最近使用SpringBoot集成Shiro,JWT快速搭建了一个后台系统,Shiro前面已经使用过,JWT(JSON Web Tokens)是一种用于安全的传递信息而采用的一种标准。Web系统中,我们使用加密的Json来生成Token在服务端与客户端无状态传输,代替了之前常用的Session。
系统采用Redis作为缓存,解决Token过期更新的问题,同时集成SSO登录,完整过程这里来总结一下。... 详情

Zookeeper分步式协调服务的理论与实践

Zookeeper是一个开源的分布式的应用程序协调服务,同时也是Hadoop和HBase的重要组成部分。它可以提供的服务包括:分布式消息同步和协调机制、服务器节点动态上下线、统一配置管理、负载均衡、集群管理等。Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应,从而实现集群中类似Master/Slave管理模式。... 详情

SpringBoot下多数据源JPA与Mybatis完整配置

在一段时间里,我们在一些项目的架构中,使用了JPA作为持久化框架来操作数据库,并且在项目中使用JPA还是非常方便的,省去了如Mybatis中的Mapper.xml文件,同时我们可以通过在程序中定义的类型来生成和更新数据库。可是在新的团队和项目中发现在复杂的业务查询操作中,JPA对于开发人员的熟悉API及掌握情况还是比较高的,这对于之前一直使用Mybatis的团队来说增加了开发难度,于是我们又将Mybatis也集成到了项目当中。同时业务上要求从多个数据库中操作数据,这样一来,我们就要考虑需要支持JPA和Mybatis两种框架同时可以操作多个数据源。于是,就有了这篇。... 详情

前端vue-cli 3.0开发基础总结

vue-cli是一个基于Vue.js的项目脚手架,可以帮助我们快速的搭建vue.js项目。之前我们已经总结了在vue-cli 2.*下开发前端所需要做的工作,包括开发用到的组件,访问权限控制等等。最近看了官方3.0版本的介绍,发现在3.0版本下的脚手架相对于之前2.0的版本使用起来就显得更加简洁,主要去除了build以及config目录,就让整个工程目录更加清晰易懂,当然整体与2.0还是有一些区别。到这里总结一下,虽然我们技术不是最牛的,但是软件我们就是要用最新的。于是我就将vue-cli 3.0版本用在了最近的几个新项目里。这里就来说说使用vue-cli 3.0版本需要做的工作,算是个总结。... 详情

使用vue-cli 2.0脚手架搭建管理后台

最近看到vue-cli3.0已经发布了,于是想到了今年初我们的一个基于vue-cli2.0的小项目,也使用了Vue+Element做前端,采用前后分离的方式部署。后端的开发人员来做前端还是有一些路要走的,毕竟前端的框架库,甚至思想都已经发生了巨大的变化,早已不是一个jquery就能一统江湖的时代了。甚至连我们之前一直在用的Easyui也都出了Angular和Vue的版本。但即使做后端对于前端的知识及发展还是要有所了解。这篇粗略的回顾了使用vue-cli 2.0版本脚手架基于vue开发的前端应用的过程,以及所要考虑的点,同时也附上了我们在遇到某些问题时解决的代码。... 详情

设计实现系统的多附件上传统一处理功能

附件上传是绝大多数系统都有的功能,通常情况下我们都是每一个不同的附件上传请求去做生成路径,保存文件,记录附件等工作,尽管我们有通用的附件处理类,但实际上在开发过程当中依然需要占用一部分精力在附件的保存记录等环节。对于需要大量上传附件的系统来说,尤其如此。其实想到这里,我们是否可以考虑有一个方法,对于带有附件的请求,由系统自动帮我们做这前面一系列的工作,而我们只需要处理我们的核心业务即可?这就是我们这篇要说的,用切面来检查请求的类型,并统一处理上传的附件。... 详情