当前flask-login版本中无reload_user函数,是怎么实现验证用户信息的?

tkpromise
  • 95

我在学习flask的时候接触到了flask-login这个扩展,对于user_loader这个装饰器很不理解
查询了很多文章/问答都提到user_loader这个装饰器将装饰的函数赋给了self.user_callback,
而reloader_user也是调用的方法,但我在github查询flask-login并没有找到reloader_user这个
函数,所问现在是什么替代了之前的reloader_user的实现?当用户非第一次登录,在已经登记的情况下
如何获取用户的登录信息的?谢谢!

flask-login的github:https://github.com/maxcountry...
我查到的相关文章:http://www.voidcn.com/article...

回复
阅读 1.7k
2 个回答
✓ 已被采纳
@login_manager.user_loader
def load_user(user_id):
    ...

user_loader 就是告诉 flask-login 你的登录用户将从 load_user() 函数中取得.

我们分别以未登录和已登录两种情况来分析.
首先你要提供一个 User 接口, 像这样的

class MyUser(object):
    is_authenticated = False
    is_active = True
    is_anonymous = True
    def get_id():
        return None

假设当前用户命名为 currUser.

未登录

这时候 currUser.is_anonymousTrue, 表示匿名用户.
当用户提交帐号密码进行登录时, 你得从数据库中验证它, 通过后

  • currUser.is_authenticated 变成 True
  • currUser.is_anonymous 变成 False
  • currUser.get_id() 返回该用户的 登录帐号

然后调用 flask_login.login_user(currUser) 告诉 flask-login 该用户已经登录成功.

已登录

flask_login.current_user 变量引用当前用户, 退出登录时调用 flask_login.logout_user()

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏