flask_login 模块, 如何实现一个账号可以同时在两个设备上登录
基于 flask_login 模块, 如何实现一个账号可以同时在两个设备上登录,当第3个设备登的时候,自动把第一个挤掉。
如果不使用flask_login 做登录校验,是否有其它可选项
回答:
这个问题已经解决,只需要重新设计下user这个模型就可以
之前 user 结构
idname
email
password
token
注意这里的token就是用来限制一个用户只能同时在一个设备登录的,当有新的设备重新登录时,我会更新token,这样老设备的token就失效的,相当于将他挤出来了。
如果想要多个设备支持同时登录,那就需要对应有多个token,总不能在user表里面 加 token1, token2,token3之类的。
我想到的方案是,设计一个新的表 LoginToken表
idtoken
user_id
与 user 表是多对一关系,每个设备登录后都对应有一条logintoken记录,如果希望两个设备同时登录,就有两天记录,关联的同一个外键user_id。 如果只希望一个设备登录,那只保留一条logintoken记录就好,当新设备登录时,直接替换token。
回答:
好久没用flask了,以下内容不一定准确,供参考。
flask_login本质上利用session保存登录状态的,用户的cookie就是key。而session是一个代理对象,我不知道如何跨session访问变量。
但flask_session可以把session存储到数据库,这样操作空间就大了。每登录一个session,就额外记录它session id 对应的user,检查数据库里有几个user了,如果有多余的,就按登录时间把数据库里的session删除。
以上是 flask_login 模块, 如何实现一个账号可以同时在两个设备上登录 的全部内容, 来源链接: utcz.com/a/161808.html