flask-login登录的并保持状态:
- 1、登录:用户提交用户名和密码;
- 2、验证并建立会话:服务器验证密码,验证通过建立会话(使用session保存user_id),将session_id放到响应的cookie中;
- 3、再次登录:cookie会自动携带session_id,服务器根据session_id对应的session判断用户是否登录。
注:
Session 防护
Session 信息一般存放在 cookie 中,但是 cookie 不够安全,容易被窃取其中 Session 信息,伪造用户登录系统,幸运的是 Flask-Login 提供了 Session 防护机制,提供有 basic 和 strong 两种保护等级,通过 login_manager.session_protection 来开关和设置等级,默认等级为 basic,如果设置为 None 将关闭 Session 防护机制。
在保护机制开启的情况下,每次请求会根据用户的特征(一般指有用户IP、浏览器类型生成的哈希码)与 Session 中的对比,如果无法匹配则要求用户重新登录,在强模式下( strong )一旦匹配失败会删除登录者 Session,以消除攻击者重构 cookie的可能
参考资料:用户登录 Flask-Login