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

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

典型回答

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

拉黑

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

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

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

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

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

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

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

踢人下线

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

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

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

相关推荐
提笔了无痕39 分钟前
如何用Go实现整套RAG流程
开发语言·后端·golang
成都第一深情IZZO1 小时前
事务未提交就发送 MQ,导致消费者读不到订单数据的问题
后端
大橙子打游戏1 小时前
Fable5不能用了,但是依然能让 AI 纯靠截图玩通宝可梦
后端
Jason_chen1 小时前
Linux 3.0 总线机制与故障排查详解
后端
成都第一深情IZZO1 小时前
Spring Boot 动态数据源在事务中切库失效问题排查
后端
_遥远的救世主_1 小时前
稳定性工程:SLO 量化、降级收敛与故障兜底体系
后端
_遥远的救世主_1 小时前
多区域架构:边缘节点、核心节点与跨区域写冲突
后端
ServBay1 小时前
你跟高级 C# 工程师的区别,就是这8个开发技巧
后端·c#·.net
卷无止境1 小时前
Python CLI 应用开发最佳实践全面指南
后端
_遥远的救世主_1 小时前
租户架构与资源治理:隔离模型选择、Noisy Neighbor 治理与成本边界
后端