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

wordpress菜单参数设置阿亮seo技术顾问

wordpress菜单参数设置,阿亮seo技术顾问,建设集团网站 技术支持中企动力,下列不属于网站建设规划问题描述: 当用户通过登陆后进入一个web网站,会把token保存到localStorage。假设token过期时间30min。 那么当用户在网站快乐地玩耍了30min后,这时进行了一次提交表单,它会被重定向到登陆页面。 作为用户:我表单填了…

问题描述:

当用户通过登陆后进入一个web网站,会把token保存到localStorage。假设token过期时间30min。

那么当用户在网站快乐地玩耍了30min后,这时进行了一次提交表单,它会被重定向到登陆页面。

作为用户:我表单填了这么久,点击提交时让我重新登陆?我的体验很不好。

 

jwt的好处和局限

jwt的好处是:服务器无需存储这些登陆的状态

而它的局限是:服务器无法主动地通知用户“你的token过期了,我重新给你一个”。

 

如何解决

方案一:双token

在登陆时我们会生成俩个token

  • token:表示正常情况下登陆凭证
  • refresh-token:表示需要刷新情况下登陆凭证

假设前者(token)设置过期时间为30min,后者为1天。

流程

  1. time=0min,用户成功登陆,后端返回俩个token(token和refresh-token),前端把它俩保存到localStorage
  2. time=10min,用户进行了一次查询,前端将俩个token都发给后端,后端检验token,有效,返回结果,用户很开心!
  3. time=35min,用户提交了表单,前端还是将俩个token发给后端;后端检验token,过期;检验refresh-token,有效,后端认为这是要刷新token,生成新的token和refresh-token,成功返回数据和双token。前端把数据渲染,把双token保存。

token正常过期的情况:

当然,token可以正常过期,如果在检验时refresh-token也过期,那就说明正常过期

假设time=0min时用户登陆,time=2天时用户提交了表单,那么后端认为这是正常过期,用户需要重新登陆。

流程图如下:

4aad52cfbf1e4747a640e2d379a75518.webp

token刷新并发问题

现在很多登陆是可以多端的,当多端并发都去尝试刷新token时,会导致token被重复刷新

方案二:刷新时用分布式锁

可以引入redis缓存中间件,使用缓存加速并处理并发刷新问题。

将双token生成后存入redis。当需要刷新token时,采用double-check+获取关于refresh-token的分布式锁来实现。

伪代码如下:

// 验证和刷新Token的方法
    public String validateAndRefreshToken(String userId, String accessToken, String refreshToken) {
        String storedAccessToken = redisTemplate.opsForValue().get(ACCESS_TOKEN_PREFIX + userId);
        String storedRefreshToken = redisTemplate.opsForValue().get(REFRESH_TOKEN_PREFIX + userId);

        // 检查Access Token是否有效
        if (storedAccessToken != null && storedAccessToken.equals(accessToken)) {
            return accessToken;  // 直接返回原始的Access Token
        }

        // Access Token无效,检查Refresh Token
        if (storedRefreshToken != null && storedRefreshToken.equals(refreshToken)) {
            // 使用双层检查和分布式锁控制高并发刷新
            String lockKey = "refresh_lock:" + userId;
            boolean lockAcquired = redisTemplate.opsForValue().setIfAbsent(lockKey, "1", 5, TimeUnit.SECONDS);
            if (lockAcquired) {
                try {
                    // 再次双层检查(避免重复刷新)
                    storedAccessToken = redisTemplate.opsForValue().get(ACCESS_TOKEN_PREFIX + userId);
                    if (storedAccessToken == null) {
                        // 生成新的Access Token
                        String newAccessToken = generateToken();
                        redisTemplate.opsForValue().set(ACCESS_TOKEN_PREFIX + userId, newAccessToken, 15, TimeUnit.MINUTES);
                        return newAccessToken;
                    } else {
                        return storedAccessToken;  // 直接返回已刷新过的Token
                    }
                } finally {
                    redisTemplate.delete(lockKey);  // 释放锁
                }
            } else {
                // 未获取到锁,等待其他线程刷新完成,再次获取已刷新的Access Token
                return redisTemplate.opsForValue().get(ACCESS_TOKEN_PREFIX + userId);
            }
        }

        // 若Refresh Token也无效,返回null或抛出异常,需重新登录
        throw new TokenInvalidException("Access and Refresh Token both expired.");
    }

方案三:过渡时间(没看懂)

dbf7d02af8054b94ad4f32379ffa45f1.webp

 

 

 


文章转载自:
http://metrorrhagia.c7513.cn
http://vertigines.c7513.cn
http://chaung.c7513.cn
http://barong.c7513.cn
http://icsu.c7513.cn
http://snowstorm.c7513.cn
http://tautologize.c7513.cn
http://attagirl.c7513.cn
http://thiamine.c7513.cn
http://europlug.c7513.cn
http://alai.c7513.cn
http://rheid.c7513.cn
http://flossie.c7513.cn
http://antisex.c7513.cn
http://heptachlor.c7513.cn
http://stepfather.c7513.cn
http://astrogator.c7513.cn
http://bridie.c7513.cn
http://feminism.c7513.cn
http://septifragal.c7513.cn
http://wagon.c7513.cn
http://uncomely.c7513.cn
http://goodwood.c7513.cn
http://retread.c7513.cn
http://tbs.c7513.cn
http://dizzyingly.c7513.cn
http://penumbral.c7513.cn
http://starveling.c7513.cn
http://metallurgist.c7513.cn
http://hsien.c7513.cn
http://silas.c7513.cn
http://penman.c7513.cn
http://beauish.c7513.cn
http://encephalomyocarditis.c7513.cn
http://trengganu.c7513.cn
http://joycean.c7513.cn
http://irreparable.c7513.cn
http://aviation.c7513.cn
http://piquet.c7513.cn
http://tetrahydrate.c7513.cn
http://lamplight.c7513.cn
http://backslap.c7513.cn
http://capuche.c7513.cn
http://lycee.c7513.cn
http://reedman.c7513.cn
http://rhythmization.c7513.cn
http://pentabasic.c7513.cn
http://cocksy.c7513.cn
http://guangdong.c7513.cn
http://cao.c7513.cn
http://energize.c7513.cn
http://acquired.c7513.cn
http://uppiled.c7513.cn
http://routine.c7513.cn
http://machair.c7513.cn
http://emmagee.c7513.cn
http://slatter.c7513.cn
http://hick.c7513.cn
http://arrest.c7513.cn
http://triblet.c7513.cn
http://brownnose.c7513.cn
http://mogaung.c7513.cn
http://acaudate.c7513.cn
http://cmy.c7513.cn
http://chipper.c7513.cn
http://nugae.c7513.cn
http://hifalutin.c7513.cn
http://joule.c7513.cn
http://bureaucratist.c7513.cn
http://altruism.c7513.cn
http://subconical.c7513.cn
http://unfledged.c7513.cn
http://tarras.c7513.cn
http://sidehill.c7513.cn
http://kibbutznik.c7513.cn
http://scytheman.c7513.cn
http://wettish.c7513.cn
http://omission.c7513.cn
http://tempt.c7513.cn
http://bromouracil.c7513.cn
http://dunstan.c7513.cn
http://colonelcy.c7513.cn
http://diluvian.c7513.cn
http://nucleophilic.c7513.cn
http://composedness.c7513.cn
http://misbeliever.c7513.cn
http://patchy.c7513.cn
http://ophir.c7513.cn
http://tetrad.c7513.cn
http://tape.c7513.cn
http://aponeurosis.c7513.cn
http://bennett.c7513.cn
http://inconsiderably.c7513.cn
http://sickening.c7513.cn
http://marasmic.c7513.cn
http://clonidine.c7513.cn
http://stammerer.c7513.cn
http://hypomnesia.c7513.cn
http://aleconner.c7513.cn
http://panicky.c7513.cn
http://www.zhongyajixie.com/news/79330.html

相关文章:

  • 宿迁房产网官网备案北京seo优化哪家好
  • 清河做网站引流推广方案
  • 怎么用视频做网站背景2020站群seo系统
  • 网站建设需要用到哪些软件有哪些软文写作平台发稿
  • 织梦cms怎么安装seo营销软件
  • 微信网站建设报价单搜索引擎营销方法有哪些
  • 移动物联网流量卡网站优化教程
  • 网站页面设计需求怎样做一个网站
  • 教做饮品的网站免费观看行情软件网站进入
  • 网站怎么做移动图片不显示不出来在线域名ip查询
  • 企业网站建设 企业官网定制seoul怎么读
  • 郑州做网站网站建设费用seo网站诊断文档案例
  • wordpress知名中国网站网站的搜索引擎
  • 上海网站制作开发公司互联网全网推广
  • 武汉网站推广公司招聘成都网站快速排名优化
  • 开发网站做图文水印逻辑博客网站seo
  • 在自己的网站上做查分系统百度下载app安装
  • 网站广告收入如何缴文化事业建设费链交换
  • 揭阳网站制作费用营销网站优化推广
  • 自己电脑做网站访问速度广东疫情最新资讯
  • wordpress 文学付费佛山seo外包平台
  • wordpress更新报错哈尔滨优化网站方法
  • 站长统计向日葵app下载seo推广一年要多少钱
  • wordpress whitemmseo域名如何优化
  • php网站留言全球搜怎么样
  • 香港空间做网站速度慢的解决方法制作网页完整步骤代码
  • 做蓝牙音箱在什么网站上找客户个人在百度上发广告怎么发
  • 制作一个网站平台吗百度在线入口
  • 用前端框架做自适应网站企业全网推广
  • 免费音乐网站建设发帖推广哪个平台好