业务设计技巧---登录拉黑功能,实现拉黑用户和把已经登陆用户踢下线

✅实现一个登录拉黑功能,实现拉黑用户和把已经登陆用户踢下线。

典型回答

这个问题,主要分两部分,一部分是拉黑,一部分是踢下线。分开讨论。

拉黑

用户的拉黑,可以看是哪种拉黑方式,如果是单个用户的拉黑,可以提供一个后台接口,在管理端,通过输入用户的手机号,或者用户 ID 进行拉黑,如果是批量的,那么就需要提供一个页面,支持批量上传用户列表。

其次就是拉黑功能的实现,有3种方式,第一种是加黑名单,第二种是更新用户的状态,第三种是在用户表上打标。

第一种是不修改用户表的方案,即我们单独有一张黑名单表,这里记录了用户的黑名单的列表,这么做的好处是可以和用户表解耦,互相不干预,而且还有个好处,就是可以做很多其他的事情,比如说拉黑开始时间、拉黑结束时间等等的各种控制。

第二种和第三种方案本质上是一样的,就是在用户表上有个字段表示这个用户的被拉黑了。

如果用户量比较大,或者是拉黑的用户比较多,建议用第一种方案,而且这个名单还可以前置给到其他的业务一起用,比如风控。如果用户量不大的话,没必要搞这个黑名单表,用户表加一个状态或者字段就行了。

然后为了提升性能,针对用户的黑名单,还可以做缓存,将黑名单用户缓存在 Redis 或者本地缓存中,可以快速的针对黑用户进行拦截,而且黑名单非常适合使用布隆过滤器!如果量很大,可以进一步的用布隆过滤器来做缓存。

典型回答布隆过滤器是一种数据结构,用于快速检索一个元素是否可能存在于一个集合(bit 数组)中。它的基本原理是利用多个哈希函数,将一个元素映射成多个位,然后将这些位设置为 1。当查询一个元素时,如果这些位都被设置为 1,则认为元素可能存在于集合中,否则肯定不存在。所以,布隆过滤器可以准确的判断...

踢人下线

除了拉黑外,还有一个功能就是踢人下线,这个功能其实也简单,只需要我们把用户登录后的 Session 给他清空就行了。这样用户在下次访问我们的系统的时候,因为查不到 Session,就是被强制下线了。

至于实现方式,要看 Session 存在哪,比如 Redis 的话,那么就找到这个用户的 ID,然后把他对应的 Session 给他清空即可。

如果用的是那种单点登录的框架,很多都是支持这些功能的,可能你只需要调一个方法,就可以直接一键踢人下线了。如:sa-token.cc/doc.html#/u...

相关推荐
小码哥_常9 分钟前
Kafka平替!SpringBoot+Redis Stream+消费组打造极致消息队列
后端
IT_陈寒2 小时前
Redis缓存击穿:3个鲜为人知的防御策略,90%开发者都忽略了!
前端·人工智能·后端
uzong2 小时前
Harness Engineering 是什么?一场新的 AI 范式已经开始
人工智能·后端·架构
唐叔在学习3 小时前
Python桌面端应用最小化托盘开发实践
后端·python·程序员
yuhaiqiang3 小时前
被 AI 忽悠后,开始怀念搜索引擎了?
前端·后端·面试
二闹4 小时前
Python文件读取三巨头你该选择哪一个?
后端·python
苏三说技术4 小时前
推荐几个牛逼的AI Agent项目
后端
武子康4 小时前
大数据-253 离线数仓 - Airflow 入门与任务调度实战:DAG、Operator、Executor 部署排错指南
大数据·后端·apache hive
IT_陈寒5 小时前
深入理解JavaScript:核心原理与最佳实践
前端·人工智能·后端
树獭叔叔5 小时前
GRPO:比PPO更简单的RLHF算法
后端·aigc·openai