首页 > 编程 > Python > 正文

Flask框架的学习指南之用户登录管理

2020-02-23 04:07:17
字体:
来源:转载
供稿:网友

继续flask的学习之旅。今天介绍flask的登陆管理模块,还记得上一篇中的blog小项目么,登录是咱们自己写的验证代码,大概有以下几个步骤:

1、在登录框中输入用户名和密码

2、flask view函数获取用户密码,然后到数据库中查询该用户信息,进行匹配

3、如果成功,就写入session中,重定向到首页

4、如果对于特定视图,必须要登录才能访问,那么需要在每个视图函数验证session里是否存在该用户。

今天继续改造blog项目,介绍的flask-login模块就是替我们来搞定这些业务相关度较少的公用功能,它可以帮助我们:

在会话中存储当前活跃的用户 ID,让你能够自由地登入和登出。
让你限制登入(或者登出)用户可以访问的视图。
处理让人棘手的 “记住我” 功能。
帮助你保护用户会话免遭 cookie 被盗的牵连。
可以与以后可能使用的 Flask-Principal 或其它认证扩展集成。

一、如何使用flask-login模块?

1、安装flask-login

E:/workdir/dct-server-5055187/src>pip install flask-login

2、使用flask-login

 2.1)  在/blog2/__init__.py添加:

#引用包from flask.ext.login import LoginManager#登陆管理#声明login对象login_manager = LoginManager()#初始化绑定到应用login_manager.init_app(app)#声明默认视图函数为login,当我们进行@require_login时,如果没登陆会自动跳到该视图函数处理login_manager.login_view = "login"#当登陆成功后,该函数会自动从会话中存储的用户 ID 重新加载用户对象。它应该接受一个用户的 unicode ID 作为参数,并且返回相应的用户对象。@login_manager.user_loaderdef load_user(userid):return User.query.get(int(userid))

2.2) 修改User模型(红色部分为新增代码)

from flask.ext.login import UserMixinfrom blog2 import dbclass User(db.Model, UserMixin):  __tablename__ = 'b_user'  id = db.Column(db.Integer,primary_key=True)  username = db.Column(db.String(10),unique=True)  password = db.Column(db.String(16))  def __init__(self,username,password):    self.username = username    self.password = password  def __repr__(self):    return '<User %r>' % self.username

该用户类必须实现以下几个方法:

is_authenticated

当用户通过验证时,也即提供有效证明时返回 True(只有通过验证的用户会满足 login_required 的条件。)

is_active

如果这是一个活动用户且通过验证,账户也已激活,未被停用,也不符合任何你 的应用拒绝一个账号的条件,返回 True 。不活动的账号可能不会登入(当然, 是在没被强制的情况下)。

is_anonymous

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表