Flask框架Flask-Login用法分析


Posted in Python onJuly 23, 2018

本文实例讲述了Flask框架Flask-Login用法。分享给大家供大家参考,具体如下:

Flask-Login插件中带了6种信号,可以基于其中的信号做一些额外工作,比如user_logged_in来记录用户的登录次数和登录IP等。

安装

pip install flask-login

初始化

import flask import Flask
from flask_login import LoginManager
app = Flask(__name__)
login_manager = LoginManager()
login_manager.init_app(app)

UserMixin

flask-login提供了UserMixin,有一些用户相关的属性。

  • is_authenticated:是否被验证
  • is_active:是否被激活
  • is_anonymous:是否匿名用户
  • get_id():获得用户的Id,并转换Unicode类型

可以在创建模型的时候继承UserMixin:

from flask_login import UserMixin,login_user
from sqlalchemy import create_engine,Column,String,Integer
from sqlalchemy.ext.declaractive import declaractive_base
engine = create_engine("mysql+pymysql://root:123456@localhost/pythondb?charset=utf8")
Base = declaractive_base()
class User(Base,UserMixin):
  __tablename__ = "user"
  id = Column(Integer,primary_key=True)
  name = Column(String(16))
  password = Column(String(16))
  def login(self):
    login_user(self)

当调用login方法时,登录用户就会触发user_logged_in信号,开发者可以在此做一些自定义操作,如增加登录次数:

from flask_login import user_logged_in
@user_logged_in.connect_via(app)
def _logged_in(sender,user,**extra):
  ...

使用user_loader装饰器的回调函数非常重要,它将决定user对象是否在登录状态:

# login_manager为上面初始化的login_manager
@login_manager.user_loader
def user_loader(id):
  return session.query(User).filter_by(id=id).first()

login_required

在开发过程中,常常会遇到这样的需求,某个接口必须要登录情况下才可以获取信息,login_required正好可以满足这一需求

from flask_login import login_required
@app.route("/user_info")
@login_required
def user_info():
  ...

获取用户的信息,必须先登录才可以获取信息。

希望本文所述对大家基于Flask框架的Python程序设计有所帮助。

Python 相关文章推荐
python使用Berkeley DB数据库实例
Sep 26 Python
python实现调用其他python脚本的方法
Oct 05 Python
python通过colorama模块在控制台输出彩色文字的方法
Mar 19 Python
python在linux系统下获取系统内存使用情况的方法
May 11 Python
Python线程创建和终止实例代码
Jan 20 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
Feb 13 Python
对Python 文件夹遍历和文件查找的实例讲解
Apr 26 Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 Python
使用TensorFlow实现SVM
Sep 06 Python
python制作mysql数据迁移脚本
Jan 01 Python
python默认参数调用方法解析
Feb 09 Python
Python命令行参数argv和argparse该如何使用
Feb 08 Python
Django中的文件的上传的几种方式
Jul 23 #Python
flask中的wtforms使用方法
Jul 21 #Python
详解flask表单提交的两种方式
Jul 21 #Python
python实现周期方波信号频谱图
Jul 21 #Python
Flask-Mail用法实例分析
Jul 21 #Python
python实现傅里叶级数展开的实现
Jul 21 #Python
Python实现快速傅里叶变换的方法(FFT)
Jul 21 #Python
You might like
php下统计用户在线时间的一种尝试
2010/08/26 PHP
使用php计算排列组合的方法
2013/11/13 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
js中使用replace方法完成某个字符的转换
2014/08/20 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
基于JS实现网页中的选项卡(两种方法)
2017/06/16 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
vue自定义一个v-model的实现代码
2018/06/21 Javascript
js实现各浏览器全屏代码实例
2018/07/03 Javascript
Vue slot用法(小结)
2018/10/22 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
[03:24]2014DOTA2国际邀请赛 神秘商店生意火爆
2014/07/18 DOTA
django批量导入xml数据
2016/10/16 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
python检测IP地址变化并触发事件
2018/12/26 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
python matplotlib库直方图绘制详解
2019/08/10 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
简单了解Python多态与属性运行原理
2020/06/15 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
MAC彩妆英国官网:M·A·C UK
2018/05/30 全球购物
函授毕业生自我鉴定
2013/11/06 职场文书
师说教学反思
2014/02/07 职场文书
大学生在校学习的自我评价
2014/02/18 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
深入理解python协程
2021/06/15 Python
MySQL数据库表约束讲解
2022/06/21 MySQL