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实现dict版图遍历示例
Feb 19 Python
浅谈django中的认证与登录
Oct 31 Python
Python paramiko模块的使用示例
Apr 11 Python
python opencv旋转图像(保持图像不被裁减)
Jul 26 Python
对numpy中二进制格式的数据存储与读取方法详解
Nov 01 Python
使用Python+selenium实现第一个自动化测试脚本
Mar 17 Python
Python利用命名空间解析XML文档
Aug 10 Python
Python爬取数据并实现可视化代码解析
Aug 12 Python
selenium切换标签页解决get超时问题的完整代码
Aug 30 Python
Python collections模块的使用方法
Oct 09 Python
Python confluent kafka客户端配置kerberos认证流程详解
Oct 12 Python
python中类与对象之间的关系详解
Dec 16 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 Stream_*系列函数
2010/08/01 PHP
php 文章调用类代码
2011/08/11 PHP
深入PHP nl2br()格式化输出的详解
2013/06/05 PHP
PHP实现远程下载文件到本地
2015/05/17 PHP
php session实现多级目录存放实现代码
2016/02/03 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
jQuery使用post方法提交数据实例
2015/03/25 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
基于Javascript实现倒计时功能
2016/02/22 Javascript
js自定义select下拉框美化特效
2016/05/12 Javascript
深入理解bootstrap框架之第二章整体架构
2016/10/09 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
2020/03/19 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
Python函数参数类型*、**的区别
2015/04/11 Python
Python中MySQL数据迁移到MongoDB脚本的方法
2016/04/28 Python
python 通过xml获取测试节点和属性的实例
2018/03/31 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
keras 多gpu并行运行案例
2020/06/10 Python
大学生新闻专业个人自我评价
2013/11/12 职场文书
任课老师推荐信范文
2013/11/24 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
中学推普周活动总结
2015/05/07 职场文书
学雷锋献爱心活动总结
2015/05/11 职场文书
Python实现查询剪贴板自动匹配信息的思路详解
2021/07/09 Python
spring boot实现文件上传
2022/08/14 Java/Android