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编写的微博应用
Oct 17 Python
简单介绍Python中的RSS处理
Apr 13 Python
浅谈MySQL中的触发器
May 05 Python
利用Python2下载单张图片与爬取网页图片实例代码
Dec 25 Python
python开启摄像头以及深度学习实现目标检测方法
Aug 03 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
May 16 Python
Python对接六大主流数据库(只需三步)
Jul 31 Python
python3实现mysql导出excel的方法
Jul 31 Python
Python算法的时间复杂度和空间复杂度(实例解析)
Nov 19 Python
Python3标准库之threading进程中管理并发操作方法
Mar 30 Python
python uuid生成唯一id或str的最简单案例
Jan 13 Python
python 定义函数 返回值只取其中一个的实现
May 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
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
使用 laravel sms 构建短信验证码发送校验功能
2017/11/06 PHP
Laravel中的chunk组块结果集处理与注意问题
2018/08/15 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
用JavaScript 处理 URL 的两个函数代码
2007/08/13 Javascript
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
js event事件的传递与冒泡处理
2009/12/06 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
2013/11/13 Javascript
JS往数组中添加项性能分析
2015/02/25 Javascript
JS实现CheckBox复选框全选全不选功能
2015/05/06 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
2018/04/18 Javascript
angular实现input输入监听的示例
2018/08/31 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
python实现二叉查找树实例代码
2018/02/08 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
Django中使用极验Geetest滑动验证码过程解析
2019/07/31 Python
Python统计文本词汇出现次数的实例代码
2020/02/27 Python
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
行政部主管岗位职责
2013/12/28 职场文书
小区门卫岗位职责
2013/12/31 职场文书
党校培训思想汇报
2014/01/03 职场文书
技术总监管理职责范本
2014/03/06 职场文书
颁奖典礼主持词
2014/03/25 职场文书
项目投资意向书
2014/04/01 职场文书
考察现实表现材料
2014/05/19 职场文书
教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
黄山导游词
2015/01/31 职场文书