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 相关文章推荐
centos下更新Python版本的步骤
Feb 12 Python
Python中返回字典键的值的values()方法使用
May 22 Python
python抓取网页中图片并保存到本地
Dec 01 Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 Python
python线程池threadpool使用篇
Apr 27 Python
Python定义函数功能与用法实例详解
Apr 08 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
Mar 09 Python
浅析python标准库中的glob
Mar 13 Python
解决echarts中饼图标签重叠的问题
May 16 Python
python语音识别指南终极版(有这一篇足矣)
Sep 09 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
利用python如何实现猫捉老鼠小游戏
Dec 04 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编程中八种常见的文件操作方式
2006/11/19 PHP
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
如何使用php实现评委评分器
2015/07/31 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
用js实现上传图片前的预览(TX的面试题)
2007/08/14 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
js确定对象类型方法
2012/03/30 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
JS实现1000以内被3或5整除的数字之和
2016/02/18 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
Vue项目中跨域问题解决方案
2018/06/05 Javascript
JS实现的JSON序列化操作简单示例
2018/07/02 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
解决removeEventListener 无法清除监听的问题
2020/10/30 Javascript
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
python实现抖音点赞功能
2019/04/07 Python
Python基于当前时间批量创建文件
2020/05/07 Python
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
信息科学与技术专业求职信范文
2014/02/20 职场文书
妇女工作先进事迹
2014/08/17 职场文书
大学本科生职业生涯规划书范文
2014/09/14 职场文书
局领导领导班子四风对照检查材料
2014/09/27 职场文书
优秀团支部申报材料
2014/12/26 职场文书
2015年度培训工作总结范文
2015/04/02 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
2015年学校工作总结范文
2015/04/20 职场文书
西安事变观后感
2015/06/12 职场文书
个人催款函范文
2015/06/23 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
Python基础之tkinter图形化界面学习
2021/04/29 Python
MySQL中distinct和count(*)的使用方法比较
2021/05/26 MySQL