因此,通常在我工作的大型网站中,您希望将一些 session 信息保存到数据库中,以便 cookie 不能轻易复制。
使用flask-login,有一种方法可以使用token_loader,来实现查询 session 表的功能,例如,将 token 映射到id。
但这意味着 session 表将与用户表的大小相同。
id = db.Column(db.Integer, primary_key=True)
token = db.Column(db.String(250), unique=True)
uid = db.Column(db.Integer, unique=True)
@login_manager.token_loader
def token_load(token):
return User.sessions.first().token
我见过有 8 MB 完整用户表信息的网站。例如,Drupal 中的站点会被 session 表行堵塞。以这种方式存储代币是否明智?每个用户只需一行告诉我们他们的代币值(value)?
基本上它就像一个密码表,用于识别拥有 cookie 而不是实际登录的用户。
有人在flask-login中的任何地方看到过这个实现吗?
最佳答案
我只想使用“用户”表中的附加字段。这将避免数据在另一个表中重复。如果您只在那里保存 ID 和 token ,我认为没有任何意义有单独的表。但是,如果您计划向其中添加更多信息(例如创建 token 的时间、其他一些更安全的内容并稍后验证 token 、生成 token 的 IP 地址或其他内容),那么您当然可以将需要单独的表。我的 2c :)
关于python - token 还记得我保存在数据库中的 flask 登录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13666492/