登录与未登录用户通知实现方案是否合理?求优化建议
方案合理性分析与优化建议
你的方案整体逻辑通顺,能够实现登录用户与未登录用户的通知推送区分,但存在一些可优化的细节,下面具体说明:
一、现有方案的合理之处
- 清晰划分了登录态与未登录态的token体系,可精准定位两类用户的推送目标
- 登录时绑定device id、登出时清理token的逻辑,能避免向已登出用户发送登录专属通知
- 未登录用户首次打开生成token的逻辑,覆盖了匿名用户的推广通知需求
二、可优化的更优方案
1. 统一token生成与存储逻辑
- 后端生成token:将token生成逻辑从前端移至后端,使用UUID或加密算法生成唯一token,避免前端生成带来的篡改、唯一性不足等安全问题
- 合并单设备token:无需为单设备维护两个独立token,可在token记录中增加
token_type字段(如logged_in/anonymous)标记状态,同时关联user_id(登录态填充用户ID,未登录态为空)与device_id,减少存储冗余,便于统一管理
2. 优化token生命周期管理
- 软删除替代物理删除:用户登出时,不直接删除数据库中的登录态token,而是标记
is_valid字段为false,保留历史记录便于排查推送问题,也能避免误操作导致的数据丢失 - 增加过期机制:为token设置有效期,登录态token与用户会话周期同步,未登录态token可设置30-90天有效期,过期后自动标记为无效,减少无效token的存储与推送浪费
3. 强化device id的关联作用
- 统一为所有token绑定device id,当匿名用户完成登录后,可通过device id将其匿名态token与登录态token关联,实现用户从匿名到登录的通知链路延续(例如用户匿名时浏览的商品,登录后可继续推送相关推广内容)
4. 简化推送筛选逻辑
- 发送登录用户通知时:筛选
user_id非空、token_type=logged_in且is_valid=true的token - 发送推广通知时:可根据需求选择筛选
user_id为空、token_type=anonymous且is_valid=true的token(仅推送给未登录用户),或同时包含登录用户的有效token(向全量用户推送推广内容)
内容的提问来源于stack exchange,提问作者Aniket Banyal
相关产品推荐
相关产品推荐

