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 08 Python
python使用代理ip访问网站的实例
May 07 Python
Python json模块dumps、loads操作示例
Sep 06 Python
python hook监听事件详解
Oct 25 Python
浅谈numpy生成数组的零值问题
Nov 12 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
Jan 23 Python
Python语言进阶知识点总结
May 28 Python
Python 监测文件是否更新的方法
Jun 10 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
Mar 18 Python
Django admin组件的使用
Oct 24 Python
教你怎么用Python实现多路径迷宫
Apr 29 Python
pandas:get_dummies()与pd.factorize()的用法及区别说明
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
PHP笔记之:日期函数的使用介绍
2013/04/24 PHP
php获取汉字首字母的函数
2013/11/07 PHP
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
兼容ie6浏览器的php下载文件代码分享
2014/07/14 PHP
php添加数据到xml文件的简单例子
2016/09/08 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
Javascript 函数对象的多重身份
2009/06/28 Javascript
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
通过javascript把图片转化为字符画
2013/10/24 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
JQuery实现图片轮播效果
2015/09/15 Javascript
jQuery实现两个select控件的互移操作
2016/12/22 Javascript
js时间戳和c#时间戳互转方法(推荐)
2017/02/15 Javascript
详解用vue.js和laravel实现微信授权登陆
2017/06/23 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
Vue面试题及Vue知识点整理
2018/10/07 Javascript
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
Python中__name__的使用实例
2015/04/14 Python
python实现bucket排序算法实例分析
2015/05/04 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
python取代netcat过程分析
2018/02/10 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
python常用排序算法的实现代码
2019/11/08 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
Python实现列表索引批量删除的5种方法
2020/11/16 Python
加拿大女装网上购物:Reitmans
2016/10/20 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
《掌声》教学反思
2014/02/23 职场文书
环境建设实施方案
2014/03/14 职场文书
论文评语大全
2014/04/29 职场文书
幼儿教师个人总结
2015/02/05 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
Python还能这么玩之只用30行代码从excel提取个人值班表
2021/06/05 Python