需求
不同客户端可以同时登录 , 但同一客户端 2个同样帐号不允许登录
就是说同一个 tid 同一帐号不允许同时登录 , 不允许的意思就是第1人登录后, 第2人再登录, 第1人会被踢下来,失效
实现
1 redis
因为token的管理使用的是redis
在生成token 的同时再生成一个key key是: tid:userid 内容: token
tid 为客户端id 比如web端为1 安卓为2 pc 端为3 由各个客户端传给后台
如果第二人登录时, 根据tid:userid 找到token ,删除 此key 和token
再将第二人的登录信息 插入到redis 中 .
这时第一人登录的信息就会过期, 也就实现了踢下线
(为什么不做成第二人登录时不放行, 因为有可能是第1人和第2人都是用户本人, 他可能会在第1个手机未退出登录时更换另一个手机登录,如果不放行,他必须等第1个token失效后才能使用 )
这个防过期的key 和token 的过期时间都是一样
2 数据库
同上面一样, 在没有redis 时使用数据库存储key
网友评论