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实现的彩票机选器实例
Jun 17 Python
Python实现的破解字符串找茬游戏算法示例
Sep 25 Python
浅谈python 线程池threadpool之实现
Nov 17 Python
Python学习笔记之open()函数打开文件路径报错问题
Apr 28 Python
python如何生成各种随机分布图
Aug 27 Python
在pycharm上mongodb配置及可视化设置方法
Nov 30 Python
Python从数据库读取大量数据批量写入文件的方法
Dec 10 Python
让你Python到很爽的加速递归函数的装饰器
May 26 Python
python pytest进阶之conftest.py详解
Jun 27 Python
Python Selenium安装及环境配置的实现
Mar 17 Python
Python如何利用正则表达式爬取网页信息及图片
Apr 17 Python
Python matplotlib安装以及实现简单曲线的绘制
Apr 26 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
雄兵连:天使彦天使彦为爱折翼,彦和炙心同时念动的誓言!
2020/03/02 国漫
php escape URL编码
2008/12/10 PHP
PHP 采集心得技巧
2009/05/15 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
2016/03/16 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
PHP多线程模拟实现秒杀抢单
2018/02/07 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
jQuery中调用WebService方法小结
2011/03/28 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
JS实现随机化快速排序的实例代码
2013/08/01 Javascript
js日期联动示例
2014/05/02 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
jQuery使用hide方法隐藏指定元素class样式用法实例
2015/03/30 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
2015/10/22 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
微信小程序解除10个请求并发限制
2018/12/18 Javascript
JavaScript中concat复制数组方法浅析
2019/01/20 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
Python3 replace()函数使用方法
2018/03/19 Python
python3第三方爬虫库BeautifulSoup4安装教程
2018/06/19 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
python numpy存取文件的方式
2020/04/01 Python
Python爬取YY评级分数并保存数据实现过程解析
2020/06/01 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
世界文化遗产导游词
2015/02/13 职场文书
故意杀人案辩护词
2015/05/21 职场文书
大一新生军训新闻稿
2015/07/17 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书