前言
? 最近小崔公司的需求迭代老快了,天天都是想…的一天,今天休假终于可以向大家分享下小崔最近完成的一个新需求吧。 小崔本来在公司是负责购物车以及营销相关业务的一名底层劳动人民。最近呢,由于小崔的一位同事离职了,迫不得已接手了用户相关模块,刚好就被老大安排了一波。
ps:小崔你别啰嗦了,快介绍你的实现方式吧
? 下面轮到小崔开始装了…请各位坐下看好
小崔对单设备登陆的理解
首先,小崔来谈谈什么是单设备登陆? 相信很多小伙伴都能看出来,“单设备登陆”,顾名思义:就是只允许一个账号在一台设备进行登陆。 小伙伴们也都知道像一些互联网大厂的App都是只允许一账号在一台设备进行登陆的,像QQ、微信、淘宝…等等。
下面介绍下小崔想到的两种实现方式:
1.1 实现方案 1:通过网关进行实现
? 1、当用户进行首次登陆的时候,将用户的唯一设备号相对应的缓存起来
? 2、当用户进行相对应的资源访问时,携带当前设备号进行访问
? 3、网关对需要进行拦截校验的URL进行权限校验,同时对用户设备号进行校验
? 4、如果当前用户设备号与用户登录时缓存的设备号一致时,允许用户进行资源访问,否则返回错误信息:“当前账号已在其他设备登陆”。
? 5、此时、前端通过放回的状态码唤起登陆界面。
实现方案 2:通过接口实现
? 这个方案呢!可能前端的小伙伴就需要响应的完成部分逻辑了。前端小伙伴需实现一个类似于定时调度的任务定时访问用户设备校验接口,如果当前接口返回的结果为设备号不一致时,唤起登陆界面,并给予提示。
下面就是小崔根据方案一的逻辑实现:
总结:小崔认为方案2 比较合理,但是由于前段小伙伴说相关逻辑比较复杂,时间不够无法完成。故而只能退而求其次选择第一种方案。第一种方案的缺点就是当用户仍然可以访问不需要进行权限校验的接口,无法像大厂App那样具有实时性。
|