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实现冒泡排序算法的两种方法
Mar 10 Python
Python smtplib实现发送邮件功能
May 22 Python
详解Python3.6安装psutil模块和功能简介
May 30 Python
详谈Pandas中iloc和loc以及ix的区别
Jun 08 Python
利用python打开摄像头及颜色检测方法
Aug 03 Python
python scipy求解非线性方程的方法(fsolve/root)
Nov 12 Python
使用coverage统计python web项目代码覆盖率的方法详解
Aug 05 Python
Python 过滤错误log并导出的实例
Dec 26 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
Django实现将一个字典传到前端显示出来
Apr 03 Python
详解BeautifulSoup获取特定标签下内容的方法
Dec 07 Python
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
Apr 14 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 flock 文件锁详细介绍
2012/12/29 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
php自定义分页类完整实例
2015/12/25 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
Javascript的闭包
2009/12/31 Javascript
Javascript的构造函数和constructor属性
2010/01/09 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
JQuery自动触发事件的方法
2015/06/13 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
基于BootStrap的图片轮播效果展示实例代码
2016/05/23 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
webstorm和.vue中es6语法报错的解决方法
2018/05/08 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
Node.js动手撸一个静态资源服务器的方法
2019/03/09 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
python基础教程之元组操作使用详解
2014/03/25 Python
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
儿童学习python的一些小技巧
2018/05/27 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
Python中asyncio模块的深入讲解
2019/06/10 Python
Python数据可视化:饼状图的实例讲解
2019/12/07 Python
python 消除 futureWarning问题的解决
2019/12/25 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
Python获取android设备cpu和内存占用情况
2020/11/15 Python
HTML5自定义mp3播放器源码
2020/01/06 HTML / CSS
JACK & JONES瑞典官方网站:杰克琼斯欧式风格男装
2017/12/23 全球购物
抵押贷款承诺书
2014/05/30 职场文书
竞聘演讲稿开场白
2014/08/25 职场文书
老干部工作汇报材料
2014/10/28 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python
详解mysql三值逻辑与NULL
2021/05/19 MySQL