过期Map自己逻辑实现

背景

一个接口A会请求另外一个接口Btoken是否有效【因为2个服务器,token存放在 接口B redis里面】,为了减少接口A请求B的次数,我们希望在A实现一个简单的过期Map。

逻辑

  • 用对应的语言的map
  • 创建定时器随机抽取一些值做是否过期校验【确保线程问题,因为我们用Node 全部都在主线程,所以没有竞争,其他语言可以通过任务队列来保证线程竞争,建议不要加锁】
  • 获取key校验是否过期,然后再验证是否有效

总结

上述思路借鉴redis过期逻辑,保证cpu消耗和内存占用,一种比较好的策略。同事开始希望用redis实现,我的意见是在保证完成工作前提前,采用新的技术,而不是用一个技术用到老,不然就变成搬砖了。

后端开发之token 常见逻辑

背景

我最近正好遇到这样子的需求,自己跟同事讨论一下,得出了一些结论,于是我就写下来方便其他遇到类似的问题。

需求

用户访问一个url,然后这个Url会调到公众号得到用户授权,然后获取openid,然后跳转到最终的展示页面。同事开发时候直接跳转了最终的展示页面,同时带了openid,却没有其他验证,我开始跑流程时候没有注意到这个逻辑,后面突然发现,你既然没有带任何验证,openid 又是固定,那么用户只要复制这最终的url,那么他后面就不需要任何授权。所以这个就一个非常巨大的安全问题。

解决方案

公众号回调接口时候,我们继续回调自己业务层,业务层生成token,返回对应最后落地页。

补充

跳转到落地页时候是一个接口,判断token是否有效,然后再生成cookie,设置过去。注意set-cookie 是不能夸域名的,我们最开始写cookie放在公众号回调里面,没有在对应的业务层的回调。开始因为可以302时候设置到跳转的域名里面,后面测试不可以,通过逻辑分析确实就不应该设置。

场景

  • 公众号登陆,跳转到最终落地页
  • 客户端已经登陆,跳转浏览器
  • 第三方登陆,qq或者微信,原理类似

屏蔽宝塔推荐安装套件

背景

因为自己一台云服务器,先搭建好运行环境,再安装宝塔,所以不想再安装套件,但每次都会弹出提示框。

解决方案

找到宝塔安装目录,我的默认C:\BtSoft,打开js C:\BtSoft\panel\BTPanel\static\js\index.js , 我的是宝塔7.1.0。文本跳到51行,然后进行代码屏蔽

如果你的其他版本,可以搜索bt.index.rec_install(); 一般函数名字不会改动

centos/linux

/www/server/panel/BTPanel/static/js,用宝塔文件管理,直接编辑就可以了

百度网盘不限制下载方法(官方方案)

背景

今天同事无意间说百度网盘下载不限制了,我觉得不可能,除非百度网盘实现P2P奖励机制,最后确认缺失百度的P2P奖励机制,我们不限制下载方式,当然依赖官方这个设置。

什么是P2P奖励?

你帮百度网盘提供下载资源给其他用户,其他百度用户从你这下载,你获得对应的报酬

怎么设置?

勾选提速模式,理论上你刚开启提速模式,加速应该不明显,因为你的没有提供上传,但我没有测试,因为自己是会员,所以我选择积分模式。

总结

百度:这种可能是百度一种算是双赢的模式,因为百度用户实在太多,免费用户占比应该比较大,提供这种方式,可以减少服务器成本,但中国内网用户很多情况,这种场景很难处理,能打通概率应该是50%不到,那么很难做到P2P,对于有独立IP用户得到积分应该比内网用户快很多。

用户:可以得到实际好处,空闲带宽其实也没有多少用,只要百度不要疯狂上传,基本感受不到。