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中的字典容器
Apr 14 Python
Python调用SQLPlus来操作和解析Oracle数据库的方法
Apr 09 Python
Python基础之getpass模块详细介绍
Aug 10 Python
Python读取图片为16进制表示简单代码
Jan 19 Python
python使用筛选法计算小于给定数字的所有素数
Mar 19 Python
Jupyter中直接显示Matplotlib的图形方法
May 24 Python
提升Python程序性能的7个习惯
Apr 14 Python
零基础使用Python读写处理Excel表格的方法
May 02 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 Python
python 获取等间隔的数组实例
Jul 04 Python
利用python开发app实战的方法
Jul 09 Python
Python:type、object、class与内置类型实例
Dec 25 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引用返回与取消引用的详解
2013/06/08 PHP
用 Composer构建自己的 PHP 框架之设计 MVC
2014/10/30 PHP
php计算一个文件大小的方法
2015/03/30 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
jquery实现excel导出的方法
2013/04/04 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
兼容Firefox的Javascript XSLT 处理XML文件
2014/12/31 Javascript
微信小程序 出现错误:{"baseresponse":{"errcode":-80002,"errmsg":""}}解决办法
2017/02/23 Javascript
CodeMirror js代码加亮使用总结
2017/03/25 Javascript
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
简单介绍Python的轻便web框架Bottle
2015/04/08 Python
简单理解Python中基于生成器的状态机
2015/04/13 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
python 读写中文json的实例详解
2017/10/29 Python
利用Python实现在同一网络中的本地文件共享方法
2018/06/04 Python
Python猴子补丁Monkey Patch用法实例解析
2020/03/23 Python
QML实现钟表效果
2020/06/02 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
英国的领先快速时尚零售商:In The Style
2019/03/25 全球购物
阿里巴巴美国:Alibaba美国
2019/11/24 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
大学生就业意向书范文
2014/04/01 职场文书
学雷锋活动总结范文
2014/04/25 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
单位更名证明
2015/06/18 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书
Python集合的基础操作
2021/11/01 Python