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的常见命令注入威胁
Feb 18 Python
python在windows下实现ping操作并接收返回信息的方法
Mar 20 Python
使用python实现正则匹配检索远端FTP目录下的文件
Mar 25 Python
python生成圆形图片的方法
Mar 25 Python
python MysqlDb模块安装及其使用详解
Feb 23 Python
pandas.DataFrame.to_json按行转json的方法
Jun 05 Python
基于Python List的赋值方法
Jun 23 Python
打包python 加icon 去掉cmd黑窗口方法
Jun 24 Python
pandas取出重复数据的方法
Jul 04 Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 Python
pytorch常见的Tensor类型详解
Jan 15 Python
使用OpenCV实现人脸图像卡通化的示例代码
Jan 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
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
PHP使用递归生成文章树
2015/04/21 PHP
Zend Framework数据库操作方法实例总结
2016/12/11 PHP
php使用curl实现简单模拟提交表单功能
2017/05/15 PHP
PHP实现简易图形计算器
2020/08/28 PHP
运算符&&的三个不同层次
2013/04/07 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
2014/03/19 Javascript
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
JavaScript字符串对象toLowerCase方法入门实例(用于把字母转换为小写)
2014/10/17 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
2015/12/25 Javascript
Node.js编写组件的三种实现方式
2016/02/25 Javascript
详解JavaScript中的自定义事件编写
2016/05/10 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
angular内置provider之$compileProvider详解
2017/09/27 Javascript
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
js计算两个时间差 天 时 分 秒 毫秒的代码
2019/05/21 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
2018/06/01 Python
基于python指定包的安装路径方法
2018/10/27 Python
代码实例讲解python3的编码问题
2019/07/08 Python
python tkinter之顶层菜单、弹出菜单实例
2020/03/04 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
Pytorch转tflite方式
2020/05/25 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
2021/01/21 Python
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
医学院学生求职简历的自我评价
2013/10/24 职场文书
仓库理货员岗位职责
2013/12/18 职场文书
业务主管岗位职责范本
2013/12/25 职场文书
元旦晚会活动总结
2014/07/09 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书