flask_login 模块, 如何实现一个账号可以同时在两个设备上登录

flask_login 模块, 如何实现一个账号可以同时在两个设备上登录

基于 flask_login 模块, 如何实现一个账号可以同时在两个设备上登录,当第3个设备登的时候,自动把第一个挤掉。

如果不使用flask_login 做登录校验,是否有其它可选项


回答:

这个问题已经解决,只需要重新设计下user这个模型就可以

之前 user 结构

id

name

email

password

token

注意这里的token就是用来限制一个用户只能同时在一个设备登录的,当有新的设备重新登录时,我会更新token,这样老设备的token就失效的,相当于将他挤出来了。

如果想要多个设备支持同时登录,那就需要对应有多个token,总不能在user表里面 加 token1, token2,token3之类的。

我想到的方案是,设计一个新的表 LoginToken表

id

token

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

回到顶部