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即可。Flask-login 插件使用

3

model文件的配置

完成基本的配置后,就要在用户信息表和角色表的定义文件中,增加权限控制了。这里创建几个Model,继承UserMixin。Flask-login 插件使用

同时需要实现几个方法:这里都返回了默认的值。

Flask-login 插件使用

Flask-Login还要求实现一个回调函数,使用get_id()方法返回唯一的Unicode字符串作为参数,返回这个用户对象。这个方法主要是当请求过来后,如果ctx.user为空,则通过session[‘user_id’]值来获取用户对象的。

Flask-login 插件使用

4

 路由文件的配置和使用

接下来就是在路由中真正的使用它了。我使用的jquery+flask的方式开发,登录方法实现如下:

登录

Flask-login 插件使用

登出

login_required是一个装饰器,可以限制url只有登录的用户可以访问。

Flask-login 插件使用

 获取当前用户的权限

current_user是flask_login提供的一个全局的变量,表示当前登录的用户。它有一个is_authenticated的字段,如果有用户登录它将返回True,否则返回False。我们使用is_authenticated来判断用户是否登录:

Flask-login 插件使用

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 插件使用的主要内容,如果未能解决你的问题,请参考以下文章

使用Flask-Login注册登录

[Python][flask][flask-login]关于flask-login中各种API使用实例

Flask-Login 使用和进阶

Python flask 框架使用 flask-login 模块,来学习一下吧

Python flask 框架使用 flask-login 模块,来学习一下吧

检查用户是不是在模板中使用 Flask-Login 登录