Python Flask-Login:构建强大的用户认证系统


Flask-Login简介

目录

​编辑

Flask-Login简介

构建流程

1. 用户模型初始化

(1)UserMixin

(2)模型中直接定义必要的属性和方法

2. Flask-Login组件初始化

(1)依赖包

(1)设置login-secret_key

(2)存储会话设置

3. Flask-Login 路由方法编写

(1) 存储userid

(2)登录视图编写(调用load_user方法对id进行存储)

(3)保护视图(加载login_required)

 (4) 注销视图(用户退出)

 (5)平台请求-刷新会话时间(如果30分钟内不存在接口请求-退出)

4. 完整代码案例


Flask-Login是Flask框架的一个扩展,专为构建用户认证系统而设计。它简化了用户登录和身份验证的流程,为开发者提供了强大而灵活的工具。本文将深入介绍Flask-Login的核心功能、基本用法和实际应用场景,通过丰富的示例代码,助你更全面地了解和应用这一优秀的认证扩展。Flask-Login为Flask应用程序提供了用户会话管理、登录和身份验证的一系列功能。

首先,需要通过以下命令安装Flask-Login:

pip install Flask-Login

使用Flask-Login,我们可以轻松地实现用户登录、注销和访问受保护资源的功能。

构建流程

1. 用户模型初始化

# 用户表
class User(db.Model):
    """用户表"""
    __tablename__ = "t_user"
    __table_args__ = {
        'mysql_engine': 'InnoDB',
        'comment': '用户表'
    }

    id = db.Column(db.Integer, primary_key=True,autoincrement=True,comment='用户id')  # 整型的主键,会默认设置为自增主键
    username = db.Column(db.String(32),comment='用户名称')
    password = db.Column(db.Text,comment='用户密码')
    email = db.Column(db.String(32),comment='用户邮箱')
    user_status = db.Column(db.String(32),server_default='1',comment='账号状态 1.启用 0.禁用')
    create_time = db.Column(db.DateTime, server_default=db.func.now(),comment='创建时间')
    end_login_time = db.Column(db.DateTime,comment='最后登录时间')

   Flask-依托于用户模型表中以下字段(对此将提供两种方式来对User所需字段进行映射)

  • is_authenticated
  • is_active
  • is_anonymous
  • get_id

(1)UserMixin

 UserMixin 是一个 Flask-Login 提供的混入类

 它自动实现了 is_authenticated、is_active、   is_anonymous 和 get_id 方法

from flask_login import UserMixin

  确保 User 模型继承 UserMixin

from flask_login import UserMixin
from exts import db

class User(db.Model, UserMixin):
    """用户表"""
    __tablename__ = "t_user"
    __table_args__ = {
        'mysql_engine': 'InnoDB',
        'comment': '用户表'
    }

    id = db.Column(db.Integer, primary_key=True, autoincrement=True, comment='用户id')  # 整型的主键,会默认设置为自增主键
    username = db.Column(db.String(32), comment='用户名称')
    password = db.Column(db.Text, comment='用户密码')
    email = db.Column(db.String(32), comment='用户邮箱')
    user_status = db.Column(db.String(32), server_default='1', comment='账号状态 1.启用 0.禁用')
    create_time = db.Column(db.DateTime, server_default=db.func.now(), comment='创建时间')
    end_login_time = db.Column(db.DateTime, comment='最后登录时间')

(2)模型中直接定义必要的属性和方法

# 用户表
class User(db.Model):
    """用户表"""
    __tablename__ = "t_user"
    __table_args__ = {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值