1 login_required

内部原理,主要是判断当前用户是否已经授权访问,如果没被授权就调用current_app.login_manager.unauthorized()

current_user.is_authenticated,current_user是哪来的,其实就是通过调用_get_user获得

注: 这里调用current_user.is_authenticated,而不是current_user.is_authenticated(),意味着把方法当属性调用了,那这样的话你的user类需要添加@property

看看_get_user内部实现, 这个用户主要从_request_ctx_stack.top获得,那谁来设置_request_ctx_stack.top,答案是login_user和reload_user

2 login_user

主要是获取用户ID,写到session的user_id里面,同时设置_request_ctx_stack.top.user = user,这样后面login_required就可以获取这个用户的授权情况了

3 logout_user

清掉session的相关字段,然后调用reload_user,这个调用会把这个用户设置为匿名用户anonymous_user

4 关于load_user回调

@login_manager.user_loader
def load_user(user_id):

主要是reload_user里面会调用,每个请求过来之后,在判断是否授权的时候,调用_get_user

current_app.login_manager._load_user()里面会调用reload_user,reload_user里面会调用这个回调,这个回调返回一个用户,如果返回None,系统就当这个用户是匿名用户

Flask-login 原理的更多相关文章

  1. Flask admin Flask login 整合模板

    项目地址: https://github.com/WES6/supflask Flask admin 官方文档: https://flask-admin.readthedocs.io/en/lates ...

  2. Flask基础原理

    一.Flask简介 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架. Werkzeug的本质是Socket服务端,用于接收http请求并对请 ...

  3. Flask启动原理,源码流程分析

    1.执行Flask的实例对象.run()方法 from flask import Flask,request,session app = Flask(__name__) app.secret_key ...

  4. Flask - 底层原理和基本流程

    一. flask依赖wsgi,实现wsgi的模块:wsgiref(django),werkzeug(flask),uwsgi 1. werkzeug示例 from werkzeug.wrappers ...

  5. Flask基础(3):session、flash、特殊装饰器、蓝图、路由正则匹配、上下文管理 & flask-session

    Session: Flask 默认将 session 以加密的形式放到了浏览器的 cookie 中 Flask 的 session 就是一个字典,字典有什么方法 session 就有什么方法 flas ...

  6. flask基础--第二篇

    1.Flask中的HTTPResponse,Redirect, render #导入render_template和redirect from flask import Flask,render_te ...

  7. Python Flask高级编程

    第1章 课程导语介绍课程的内容1-1 开宗明义 试看1-2 课程维护与提问 第2章 Flask的基本原理与核心知识本章我们首先介绍Python官方推荐的最佳包与虚拟环境管理工具:Pipenv.接着我们 ...

  8. Flask 源代码阅读笔记

    我认为我已经养成了一个坏习惯.在使用一个框架过程中对它的内部原理非常感兴趣,有时候须要花不少精力才 明确,这也导致了学习的缓慢,但换来的是对框架的内部机理的熟悉,正如侯捷所说,源代码面前,了无秘密.这 ...

  9. 常用 JavaScript 小技巧及原理详解

    善于利用JS中的小知识的利用,可以很简洁的编写代码 1. 使用!!模拟Boolean()函数 原理:逻辑非操作一个数据对象时,会先将数据对象转换为布尔值,然后取反,两个!!重复取反,就实现了转换为布尔 ...

  10. Flask第三篇——安装Flask

    现在我们来安装Flask: Windows系统安装Flask 如果你的系统是Windows,那安装起来非常方便——pip install flask Mac系统安装Flask Mac安装Flask一般 ...

随机推荐

  1. Ajax中解析Json的两种方法

    eval(); //此方法不推荐 JSON.parse(); //推荐方法 一.两种方法的区别 我们先初始化一个json格式的对象: var jsonDate = '{ "name" ...

  2. 在sublime3中运行python文件

    1.首先下载Sublime和Python,安装Python环境 注意:如果不想动手亲自配置Python环境安装的时候环境变量,请在安装的界面给Add Python 3.5 To Path前面打上对号. ...

  3. freemarker循环、下标及判断

    一.freemarker中list循环使用非常频繁,下面介绍lfreemarker中list简单的用法 1.在freemarker中遍历list数组使用list指令:<#list sequenc ...

  4. MySQL: Can’t connect to MySQL server on (111 “Connection refused”)

    1. Mysql连接问题 远程访问mysql或者通过docker访问宿主机mysql经常会碰到下面的问题: Can't connect to MySQL server on (111 "Co ...

  5. window service 批处理安装/卸载命令

    开启服务 @echo.服务启动...... @echo off @sc create 服务名 binPath= "C:\Users\Administrator\Desktop\win32sr ...

  6. el-table——可合并单元格的表格

    <el-table v-loading="loading" :data="tableData" border :span-method="col ...

  7. ubuntu16.04安装zabbix-server3.4

    一.安装前环境准备 部署zabbix需要安装apache,mysql和php sudo apt-get install apache2 sudo apt-get install mysql-serve ...

  8. Computer Vision_33_SIFT:Distinctive Image Features from Scale-Invariant Keypoints——2004

    此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...

  9. 雨后清风U盘启动盘的五大用处及制作方法

    如果有一个U盘可以帮助你安装系统,或者在你的电脑系统崩溃时帮助你修复系统,是不是很方便呢?雨后清风U盘启动盘就能帮你实现这样的效果.除此之外,雨后清风U盘启动盘还有另外一些用处.下面就来和大家分享一下 ...

  10. 01 Windows编程——Hello World

    源码 #include "stdafx.h" #include<Windows.h> int WINAPI WinMain(HINSTANCE hInst,HINSTA ...