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 07 Python
python访问sqlserver示例
Feb 10 Python
使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算)
Apr 25 Python
python实现连接mongodb的方法
May 08 Python
举例讲解Python中的算数运算符的用法
May 13 Python
Python编程中的for循环语句学习教程
Oct 14 Python
python操作xlsx文件的包openpyxl实例
May 03 Python
详解Django+Uwsgi+Nginx的生产环境部署
Jun 25 Python
Python中的groupby分组功能的实例代码
Jul 11 Python
django 数据库 get_or_create函数返回值是tuple的问题
May 15 Python
django orm模块中的 is_delete用法
May 20 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
Jun 29 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之require/include顺序 推荐
2011/01/02 PHP
Laravel模板引擎Blade中section的一些标签的区别介绍
2015/02/10 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
php面向对象之反射功能与用法分析
2017/03/29 PHP
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
JQuery中判断一个元素下面是否有内容或者有某个标签的判断代码
2012/02/02 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
JS画线(实例代码)
2013/11/20 Javascript
基于JavaScript实现TAB标签效果
2016/01/12 Javascript
jQuery模拟物体自由落体运动(附演示与demo源码下载)
2016/01/21 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
JavaScript转换数据库DateTime字段类型方法
2017/06/27 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
js Element Traversal规范中的元素遍历方法
2018/04/19 Javascript
node实现登录图片验证码的示例代码
2018/04/20 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
2018/09/14 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
[01:01:31]2018DOTA2亚洲邀请赛3月29日小组赛B组 Mineski VS paiN
2018/03/30 DOTA
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
python单元测试框架pytest的使用示例
2020/10/07 Python
Python爬虫爬取有道实现翻译功能
2020/11/27 Python
阿里旅行:飞猪
2017/01/05 全球购物
收银员岗位职责
2014/02/07 职场文书
十周年庆典策划方案
2014/06/03 职场文书
文员岗位职责范本
2015/04/16 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
python基于tkinter制作无损音乐下载工具
2021/03/29 Python
GO中sync包自由控制并发示例详解
2022/08/05 Golang