Flask学习记录之Flask-Login
Flask-Loging 可以方便的管理用户会话,保护路由只让认证用户访问
http://flask-login.readthedocs.org/en/latest/
一.初始化Flask-Login
from flask.ext.login import loginManager loginManager = LoginManager(app)
#如果需要延迟创建app 可使用
# loginManager = LoginManager()
# loginManager.init_app(app) loginManager.session_protection = "strong"
#可以设置None,'basic','strong' 以提供不同的安全等级,一般设置strong,如果发现异常会登出用户 loginManager.login_view = "login"
#这里填写你的登陆界面的路由
二.配置及使用Flask-Login
(1)使用flask-login有如下两种方法
- 在用户模型中实现 is_authenticated()方法 返回用户是否登陆
is_active()方法 返回是否允许该用户登陆,返回false该用户将不能登陆
is_anonymous()方法 返回是否是匿名用户, 也就是未登陆的用户等
get_id() 返回可以唯一标识用户的Unicode字符串 - 直接让用户模型继承 flask.ext.login.UserMixin类,类中有上面4个方法的默认实现 如:
from flask.ext.login import UserMixin class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64),unique=True)Flask-Login还提供了 flask.ext.login.AnonymousUserMixin类 继承至该类的用户模型 将作为未登陆时的用户模型,可以保持代码的一致性
(2)Flask-Login要求实现一个回调函数,使用 get_id()方法返回的唯一标识用户的Unicode字符串 作为参数 返回这个用户对象.
如果是继承的UserMixin类, get_id()方法默认返回的用户的id. 如果用户不存在,应该返回None.
from . import loginManager @loginManager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
(3)如果需要让页面只可又认证用户访问,可使用login_required装饰路由函数,未登陆的请求将会跳转到上面loginManager.login_view设置的登陆页面路由 如:
from flask.ext.login import login_required
@app.route('/index')
@login_required
def index():
return "只有登陆用户能看到我"
(4)登陆登出用户 使用如下代码:
from flask.ext.login import login_user, logout_user #获取要登陆的用户对象
user = User.query.filter_by(username = 'skkg').first() #第一个参数传入用户对象,第二个参数 传入 以后是否自动登陆
login_user(user,True) #登出
logout_user
(5)获取当前登陆的用户,
from flask.ext.login import current_user #判断当前用户是否是匿名用户
current_user.is_anonymous()
也可以在模版中使用 {% if current_user.is_authenticated() %} 判断
(6)在模版中使用,如果用户已认证就显示他的名字
{% if current_user.is_authenticated() %}
Hi {{ current_user.name }}!
{% endif %}
Flask学习记录之Flask-Login的更多相关文章
- [ZHUAN]Flask学习记录之Flask-SQLAlchemy
From: http://www.cnblogs.com/agmcs/p/4445583.html 各种查询方式:http://www.360doc.com/content/12/0608/11/93 ...
- Flask学习记录之Flask-Admin
相信用过Django框架的都不会忘记它强大的Admin功能,Flask-admin是一款能够与Django Admin所媲美的扩展,能够快速创建Web管理界面,实现了用户.文件增删改查等常用功能:也可 ...
- Flask学习记录之Flask-WTF
Flask-wtf时Wtforms库的flask框架扩展,能够方便的处理Web表单 一.定义一个web表单 使用flask-wtf时,每个web表单都由一个继承自flask.ext.wtf.Form的 ...
- Flask学习记录之Flask-SQLAlchemy
Flask-SQLAlchemy库让flask更方便的使用SQLALchemy,是一个强大的关系形数据库框架,既可以使用orm方式操作数据库,也可以使用原始的SQL命令. Flask-Migrate ...
- Flask学习记录之MarkDown编辑文本
为了让网页支持markdown编辑文本,使用如下了4个库 PageDown : 在前端提供一个可以实时将markdown内容转换成html文本进行效果预览的编辑器 Flask-PageDown: 这个 ...
- Flask学习记录之Flask-Migrate
一.配置Flask-Migrate from flask.ext.migrate import Migrate, MigrateCommand migrate = Migrate(app,db) #第 ...
- Flask学习记录之Flask-Moment
Moment.js 是一个简单易用的轻量级JavaScript日期处理类库,提供了日期格式化.日期解析等功能.它支持在浏览器和NodeJS两种环境中运行.此类库能够 将给定的任意日期转换成多种不同的格 ...
- Flask学习记录之Flask-Mail
Flask-Mail可以连接到配置中的SMTP服务器,进行邮件发送,如果没有进行SMTP服务器的配置,将会默认连接到localhost上的 一.配置及初始化 (1)flask应用配置 #配置选项 MA ...
- Flask学习记录之使用Werkzeug散列密码
数据库中直接存放明文密码是很危险的,Werkzeug库中的security能够方便的实现散列密码的计算 security库中 generate_password_hash(password,metho ...
随机推荐
- DIV+CSS布局问题:一个宽度不确定的DIV里面放三个水平对齐的DIV,左右两个DIV宽度固定为150px,中间那个DIV充满剩余的宽度
一个入门的DIV+CSS布局问题:一个宽度不确定的DIV里面放三个水平对齐的DIV,左右两个DIV宽度固定为150px,中间那个DIV充满剩余的宽度. 说明:代码非真实情况下使用,所以直接简单. 没耐 ...
- 吐槽iOS国际化:关于NSLocalizedString的使用
http://blog.csdn.net/aries4ever/article/details/8185405
- [Locked] Graph Valid Tree
Graph Valid Tree Given n nodes labeled from 0 to n - 1 and a list of undirected edges (each edge is ...
- [Locked] Count Univalue Subtrees
Count Univalue Subtrees Given a binary tree, count the number of uni-value subtrees. A Uni-value sub ...
- [Hibernate] List 映射例子
List 是 java 集合的一个工具,存储线性的数据,允许重复数据.开发者可以准确控制在 list 那个位置插入数据.本例子演示 Java 的 List 集合和 MySQL 数据库的映射应用. 使用 ...
- AOJ 0525 穷举
题意:有一个烤饼器可以烤r行c列的煎饼,煎饼可以正面朝上(用1表示)也可以背面朝上(用0表示).一次可将同一行或同一列的煎饼全部翻转.现在需要把尽可能多的煎饼翻成正面朝上,问最多能使多少煎饼正面朝上? ...
- OpenStack简单测试性能监控数据记录
- C++ —— 构建开源的开发环境
目录: 1.开源环境的选择:IDE+编译器 2.构建步骤 1.开源环境的选择:IDE+编译器 在这里选择都是发布在GPL license 下的工具:codeblocks 和 gnu gcc codeb ...
- AS3 读写 C++ 64位数字
为框架添加了一套新的与C++通讯的数据协议,其中和C++的大爷们对于他们的64位数字(unsigned long long)读写的问题纠结了很久.真心觉得“学好C++走遍天下都不怕啊” AS里Numb ...
- 《Linux命令行与shell脚本编程大全》 第二十七章 学习笔记
第二十七章:shell脚本编程进阶 监测系统统计数据 系统快照报告 1.运行时间 uptime命令会提供以下基本信息: 当前时间 系统运行的天数,小时数,分钟数 当前登录到系统的用户数 1分钟,5分钟 ...