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

青岛建设银行社会招聘网站陕西网站建设网络公司

青岛建设银行社会招聘网站,陕西网站建设网络公司,向日葵域名怎么做网站,做鸡婆的网站有没有背景: ​ 以前的单体项目,使用的是session来保存用户登录状态,控制用户的登录过期时间等信息,但是这个session是只保存在该服务器的这个系统内存中。系统只有一个服务就没关系,但是如果是分布式的服务,每个…

背景:

​ 以前的单体项目,使用的是session来保存用户登录状态,控制用户的登录过期时间等信息,但是这个session是只保存在该服务器的这个系统内存中。系统只有一个服务就没关系,但是如果是分布式的服务,每个服务都有一个自己的session,传统的做法就无法判断用户的登录状态了,也有解决办法,就是服务之间的session复制,但是代价太大了,开发成本高、难以维护。所以分布式服务下我们一般使用当下比较流向的redis+token实现用户登录。

解决方案:

​ 解决方案分两种情况,第一种:单点登录(一个用户一个token),第二种:多客户端登录(一个用户多个token)

单点登录:

​ 单点登录,会更加安全,用户同时只能在一个客户端登录。token生成,这个就不说了,网上代码一大堆,保持随机性和唯一性就可以。整个单点登录的具体实现思路如下:

  1. 当用户登录时,且账号密码正确
    1. 后端根据用户ID删除redis中1.2生成的两个键值对,用户ID获取token,根据token再删除(实现的是用户重新登录后,上一次登录状态作废,实现了同时只能有一个客户端在线)
    2. 后端生成一个token,往redis存两个带过期时间(一般是2小时)的键值对,分别为 key:token,value:用户信息、key:用户ID,value:token。第一个键值对用来判断用户登录状态是否过期,第二个键值对便于获取用户信息。
    3. 后端最后将token返回到响应头中
  2. 前端解析返回的响应头,获取token,将token存储在cookie中(默认20分钟过期)
  3. 前端在登录后的发送的请求,都需要在请求头中赋值token(前端请求拦截器实现)
  4. 后端设置网关拦截器
    1. 拦截除白名单(自己配置,因为有的请求不需要校验token,比如登录)外的请求
    2. 判断请求是否有token且该token能否在redis中找到,如果有token则放行该请求,且设置响应头赋值token。token不存在则返回登录过期(此处于前端约定登录过期的状态)
    3. 判断请求中的token存在,且距离redis设置的过期时间不到五分钟(此处灵活设置),重新生成token(一定时间更换token,提高安全性),执行1.2操作,将redis中老的token设置过期时间为30秒(解决并发请求,其他请求还在拦截器处理中)
    4. 4.3操作加redis分布式锁,锁的粒度为用户级,防止同一用户多次刷新token
  5. 前端设置响应拦截器,当后端返回登录过期时,跳转到登录页,提示登录过期。当后端返回正常时,获取响应头的token,刷新cookie里的token

多客户端登录

​ 多客户端,用户可同时在多个客户端登录。token生成,这个就不说了,网上代码一大堆,保持随机性和唯一性就可以。整个多客户端登录的具体实现思路如下:

  1. 当用户登录时,且账号密码正确
    1. 后端正常生成新的token,存入redis(实现的是用户重新登录后,上一次登录状态依旧存在,实现了同时有多个客户端在线)
    2. 后端生成一个token,往redis存两个带过期时间(一般是2小时)的键值对,分别为 key:token,value:用户信息、key:用户ID+token,value:token。第一个键值对用来判断用户登录状态是否过期,第二个键值对便于获取用户信息。
    3. 后端最后将token返回到响应头中
  2. 前端解析返回的响应头,获取token,将token存储在cookie中(默认20分钟过期)
  3. 前端在登录后的发送的请求,都需要在请求头中赋值token(前端请求拦截器实现)
  4. 后端设置网关拦截器
    1. 拦截除白名单(自己配置,因为有的请求不需要校验token,比如登录)外的请求
    2. 判断请求是否有token且该token能否在redis中找到,如果有token则放行该请求,且设置响应头赋值token。token不存在则返回登录过期(此处于前端约定登录过期的状态)
    3. 判断请求中的token存在,且距离redis设置的过期时间不到五分钟(此处灵活设置),重新生成token(一定时间更换token,提高安全性),执行1.2操作,将redis中老的token设置过期时间为30秒(解决并发请求,其他请求还在拦截器处理中)
    4. 4.3操作加redis分布式锁,锁的粒度为用户+token级,防止同一客户端用户多次刷新token
  5. 前端设置响应拦截器,当后端返回登录过期时,跳转到登录页,提示登录过期。当后端返回正常时,获取响应头的token,刷新cookie里的token
http://www.laogonggong.com/news/7986.html

相关文章:

  • 做外贸上哪些网站3d建模培训班一般多少钱
  • 做英文网站我对网络营销的理解
  • 政务服务网站建设靠谱的seo收费
  • 项目外包是什么意思seo到底是做什么的
  • 公众号第三方建微网站百度推广一年收费标准
  • 邢台做网站的百度度小店申请入口
  • 昆明网站快照优化公司搜索软件
  • 手机网站用单独做吗百度关键词搜索推广
  • 网站外链接自己可以怎么做如何建立电商平台
  • 网站需求分析报告范文图片识别搜索引擎
  • 瑞安做网站多少钱seo综合查询接口
  • 机械公司网站源码百度竞价投放
  • 机械公司网站源码百度竞价投放
  • 为什么做网站能打开各种网站的搜索引擎
  • html5医院网站seo是指什么岗位
  • 怎样做网站优化 关键词seo怎么收费seo
  • 企业备案做电影网站的后果怎么关闭seo综合查询
  • 制作静态网站的工具有哪些一键免费生成网页的网站
  • 网站设置怎么调百度公司排名多少
  • 济南的网站建设营销软件app
  • wordpress 技术英文外链seo兼职在哪里找
  • 吴江建设局网站打不开竞价排名是按照什么来计费的
  • 中国肩章网络公司优化关键词
  • 官方静态网站模板下载整合营销传播工具有哪些
  • 舆情报告分析案例杭州网站seo推广
  • 用手机建立网站游戏推广一个月能拿多少钱
  • 网站注册商标属于哪一类网站在线生成app
  • 网站优化工具seo 深圳
  • 想学网站开发免费观看行情软件网站进入
  • 网站做微信支付宝支付广东优化疫情防控措施