Flask-login 插件使用
Posted Qtest之道
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask-login 插件使用相关的知识,希望对你有一定的参考价值。
对于有前端的项目,都会涉及到登录的环境,如何管理session,如何控制登录的安全性呢?Flask-login为Flask用户提供了用户会话管理,还能保护路由只让认证的用户访问。它的基础配置wiki上介绍的很详细,这里不细说,想了解的同学可点这里(http://www.pythondoc.com/flask-login/)。
下面以一个实际的例子来说明如何进行配置和应用。
1
安装
pip install flask-login
2
初始化
在app的工厂函数中实现flask-login的初始化。然后在具体的model中import这里的login_manager即可。
3
model文件的配置
完成基本的配置后,就要在用户信息表和角色表的定义文件中,增加权限控制了。这里创建几个Model,继承UserMixin。
同时需要实现几个方法:这里都返回了默认的值。
Flask-Login还要求实现一个回调函数,使用get_id()方法返回唯一的Unicode字符串作为参数,返回这个用户对象。这个方法主要是当请求过来后,如果ctx.user为空,则通过session[‘user_id’]值来获取用户对象的。
4
路由文件的配置和使用
接下来就是在路由中真正的使用它了。我使用的jquery+flask的方式开发,登录方法实现如下:
登录
登出
login_required是一个装饰器,可以限制url只有登录的用户可以访问。
获取当前用户的权限
current_user是flask_login提供的一个全局的变量,表示当前登录的用户。它有一个is_authenticated的字段,如果有用户登录它将返回True,否则返回False。我们使用is_authenticated来判断用户是否登录:
5
模板中使用
在模板中也可以直接使用,比如显示登录用户的名称:
{% if current_user.is_authenticated() %}
Hi {{ current_user.name }}!
{% endif %}
6
常见问题
没有登录的用户访问URL
login_manager.login_view = 'auth.login' 这个配置设置了默认的跳转路径。如果想自定义这个方法的话,可以使用@unauthorized_handler装饰器。
如何控制session的过期时间
强制手工登录
比如修改密码后,可以用@fresh_login_required装饰器处理。
使用header或者api_key时
使用@login_manager.request_loader 装饰器处理。
以上是关于Flask-login 插件使用的主要内容,如果未能解决你的问题,请参考以下文章
[Python][flask][flask-login]关于flask-login中各种API使用实例
Python flask 框架使用 flask-login 模块,来学习一下吧