原理
flask-login使用的是客户端侧的session来存储用户的登录信息,在验证用户的登录状态时通过调用load_user(userid)用user的id来获得user对象,当通过id无法找到对应的user时即判定用户未登录。我们可以通过一个token来替换这个id,改写user的get_id()使其返回的是token,每次登录后更新user的token,load_user()时使用token来查找用户。当user在其他地点登录后token会被更新,这时load_user通过保存在session的旧的token值无法找到user,即判定登录失效,以实现单账号一个用户在线。
参考
https://flask-login.readthedocs.io/en/latest/#alternative-tokens
https://github.com/maxcountryman/flask-login/issues/155
示例
#使用sqlite3来当后台数据库表user三个字段id,name,aid DATABASE = r"F:\project\report\user.db" #重写load_user失败时的方法使其跳转到/login,默认情况下只会返回401 @login_manager.unauthorized_handler def