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 相关文章推荐
pymongo实现控制mongodb中数字字段做加法的方法
Mar 26 Python
python开发之for循环操作实例详解
Nov 12 Python
python使用xlrd与xlwt对excel的读写和格式设定
Jan 21 Python
TensorFlow实现Batch Normalization
Mar 08 Python
python list格式数据excel导出方法
Oct 31 Python
python 获取url中的参数列表实例
Dec 18 Python
python pytest进阶之conftest.py详解
Jun 27 Python
python字符串Intern机制详解
Jul 01 Python
Python中新式类与经典类的区别详析
Jul 10 Python
python线程中的同步问题及解决方法
Aug 29 Python
一文了解python 3 字符串格式化 F-string 用法
Mar 04 Python
pandas数据处理之绘图的实现
Jun 15 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部分常见问题总结
2008/03/27 PHP
php中在PDO中使用事务(Transaction)
2011/05/14 PHP
ThinkPHP模板Switch标签用法示例
2014/06/30 PHP
php提示Warning:mysql_fetch_array() expects的解决方法
2014/12/16 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
thinkphp实现把数据库中的列的值存到下拉框中的方法
2017/01/20 PHP
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
PHP+Mysql分布式事务与解决方案深入理解
2021/02/27 PHP
基于jquery的大众点评,分类导航实现代码
2011/08/23 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
用director.js实现前端路由使用实例
2017/01/27 Javascript
JS实现给json数组动态赋值的方法示例
2020/03/19 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
2020/01/12 Javascript
Python中暂存上传图片的方法
2015/02/18 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
Python实现Kmeans聚类算法
2020/06/10 Python
python绘制中国大陆人口热力图
2018/11/07 Python
Python3实现的简单工资管理系统示例
2019/03/12 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
python基于pexpect库自动获取日志信息
2021/02/01 Python
JAVA中的关键字有什么特点
2014/03/07 面试题
西部世纪.net笔试题面试题
2014/04/03 面试题
2014年自我评价
2014/01/04 职场文书
《四季》教学反思
2014/04/08 职场文书
副职竞争上岗演讲稿
2014/05/12 职场文书
促销活动总结怎么写
2014/06/25 职场文书
小学生成绩单评语
2014/12/31 职场文书
2019假期福利管理制度!
2019/07/15 职场文书
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript