flask 登录功能流程源码分析

本文详细分析了 Flask 的登录流程,从表单验证到用户信息查询,再到 Flask-Login 的 login_user 方法,包括 remember 参数、session 管理、cookie 设置等关键步骤,解释了如何判断用户登录状态和保持登录状态的机制。
摘要由CSDN通过智能技术生成

如下图所示,这是我们在之前的实验中编写的登录视图函数,它在 handlers/front.py 文件中:
在这里插入图片描述
当我们点击登录提交按钮后,首先进行第 42 行的表单验证,通过后,根据邮箱查询 user 数据表中对应的用户信息,然后调用 Flask-Login 提供的 login_user 方法登录。

接下来我们继续分析这个方法,它在 flask_login.utils 模块中:
在这里插入图片描述
在上一节实验我们对这个方法的参数做了说明:

  • user 就是 User 映射类的实例;
  • remember 是布尔值,当用户在表单中选中「记住我」时,remember 参数的值为 True
  • duration 是有效时间,也就是绿码的有效时间,在我们的项目中,它就是 session ,中文名字是「会话」;
  • force 表示强制登录,当用户处于封禁状态时,user.is_active 属性值为 False 。这种情况下 force 参数的值为 True 的话,会强行执行登录逻辑;
  • fresh 字面意思就是「新鲜」,对于敏感操作,比如修改密码,就需要用户处于新鲜的登录状态。例如用户登录时验证了信息,session 使得用户处于登录状态,但不是新鲜的登录状态。如果用户想修改密码,就需要重新验证一次信息,这次验证会设置 session ,使得本次验证后的用户处于新鲜的登录状态。这样起到对敏感操作的保护作用。

如上图所示,第 166 行处理 force 参数,判断是否强行登录。

第 169 行代码,current_app 就是应用对象,它的 login_manager 属性在前面的步骤中已经分析过,就是登录管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值