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 global全局变量函数详解
Sep 18 Python
Python openpyxl读取单元格字体颜色过程解析
Sep 03 Python
简单瞅瞅Python vars()内置函数的实现
Sep 27 Python
python的mysql数据库建立表与插入数据操作示例
Sep 30 Python
Python装饰器原理与基本用法分析
Jan 07 Python
pytorch torchvision.ImageFolder的用法介绍
Feb 20 Python
Python3.x+pyqtgraph实现数据可视化教程
Mar 14 Python
使用python采集Excel表中某一格数据
May 14 Python
Python实例方法、类方法、静态方法区别详解
Sep 05 Python
利用python绘制中国地图(含省界、河流等)
Sep 21 Python
详解Python利用configparser对配置文件进行读写操作
Nov 03 Python
微信小程序调用python模型
Apr 21 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返回字符串中所有单词的方法
2015/03/09 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
js脚本学习 比较实用的基础
2006/09/07 Javascript
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
JavaScript仿静态分页实现方法
2015/08/04 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
jquery层级选择器的实现(匹配后代元素div)
2016/09/05 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
js实现滚动条自动滚动
2020/12/13 Javascript
Python中的装饰器用法详解
2015/01/14 Python
结合Python的SimpleHTTPServer源码来解析socket通信
2016/06/27 Python
python动态进度条的实现代码
2019/07/03 Python
在Python函数中输入任意数量参数的实例
2019/07/16 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
使用pandas 将DataFrame转化成dict
2019/12/10 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
python 如何实现遗传算法
2020/09/22 Python
canvas三角函数模拟水波效果的示例代码
2018/07/03 HTML / CSS
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
会计专业毕业生求职信分享
2014/01/03 职场文书
不忘国耻振兴中华演讲稿
2014/05/14 职场文书
男性健康日的活动方案
2014/08/18 职场文书
就业协议书样本
2014/08/20 职场文书
2015年母亲节寄语
2015/03/23 职场文书
表扬信格式模板
2015/05/05 职场文书
防止web项目中的SQL注入
2021/12/06 MySQL