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 13 Python
21行Python代码实现拼写检查器
Jan 25 Python
对Python的多进程锁的使用方法详解
Feb 18 Python
python多继承(钻石继承)问题和解决方法简单示例
Oct 21 Python
使用python绘制二维图形示例
Nov 22 Python
Python输出指定字符串的方法
Feb 06 Python
Python单链表原理与实现方法详解
Feb 22 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题
May 20 Python
python datetime时间格式的相互转换问题
Jun 11 Python
用Python实现Newton插值法
Apr 17 Python
深入解析NumPy中的Broadcasting广播机制
May 30 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
jQuery Ajax之load()方法
2009/10/12 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
jQuery动态设置form表单的enctype值(实现代码)
2013/07/04 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
javascript中的=等号个数问题两个跟三个有什么区别
2013/10/23 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
JS实现向表格中动态添加行的方法
2015/03/30 Javascript
基于jQuery实现左右图片轮播(原理通用)
2015/12/24 Javascript
JavaScript实现ASC转汉字及汉字转ASC的方法
2016/01/23 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
vue源码中的检测方法的实现
2019/09/26 Javascript
OpenLayer3自定义测量控件MeasureTool
2020/09/28 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
python使用wxPython打开并播放wav文件的方法
2015/04/24 Python
Python定时执行之Timer用法示例
2015/05/27 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
Python实现拷贝多个文件到同一目录的方法
2016/09/19 Python
Django权限机制实现代码详解
2018/02/05 Python
python对于requests的封装方法详解
2019/01/03 Python
Pyqt5 基本界面组件之inputDialog的使用
2019/06/25 Python
Python生命游戏实现原理及过程解析(附源代码)
2019/08/01 Python
详解python中的index函数用法
2019/08/06 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
Python常用编译器原理及特点解析
2020/03/23 Python
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
蔻驰西班牙官网:COACH西班牙
2019/01/16 全球购物
酒鬼酒广告词
2014/03/21 职场文书
家长写给孩子的评语
2014/04/18 职场文书
演讲稿的格式及范文
2014/08/22 职场文书
Python制作动态字符画的源码
2021/08/04 Python