《每天5分钟用Flask搭建一个管理系统》 第7章:用户认证

第7章:用户认证

7.1 用户认证的重要性

用户认证是确定用户身份的过程,它是任何需要用户登录的应用的关键部分。认证确保只有经过验证的用户才能访问受限资源。

7.2 Flask-Login扩展的使用

Flask-Login提供了用户会话管理的简单方法。它处理用户登录和登出,并可以记住用户登录状态。

示例代码:安装Flask-Login

bash 复制代码
pip install flask-login

示例代码:配置Flask-Login

python 复制代码
from flask_login import LoginManager

login_manager = LoginManager()
login_manager.init_app(app)

# 设置用户加载函数
@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))
7.3 用户注册和登录流程

用户注册是创建新用户账户的过程,而登录是用户验证其身份的过程。

示例代码:用户注册

python 复制代码
from flask import render_template, redirect, url_for, flash
from flask_login import login_user

@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        # 假设有表单数据username和password
        user = User(username=request.form['username'], password=hashed_password)
        db.session.add(user)
        db.session.commit()
        flash('Your account has been created!', 'success')
        return redirect(url_for('login'))
    return render_template('register.html')

示例代码:用户登录

python 复制代码
from flask_login import login_user, current_user, logout_user

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        user = User.query.filter_by(username=request.form['username']).first()
        if user and user.check_password(request.form['password']):
            login_user(user)
            next_page = request.args.get('next')
            return redirect(next_page) if next_page else redirect(url_for('index'))
        else:
            flash('Login Unsuccessful. Please check username and password', 'danger')
    return render_template('login.html')
7.4 用户会话管理

用户会话管理包括登录、登出和记住用户状态。

示例代码:用户登出

python 复制代码
@app.route('/logout')
def logout():
    logout_user()
    return redirect(url_for('index'))

示例代码:记住用户状态

python 复制代码
from flask_login import remember_cookie_permanent

@app.route('/remember')
@login_required
def remember_me():
    remember_cookie_permanent()
    return 'Remember Me cookie set'
7.5 保护路由

您可以使用@login_required装饰器来保护需要用户登录才能访问的路由。

示例代码:保护路由

python 复制代码
from flask_login import login_required

@app.route('/dashboard')
@login_required
def dashboard():
    return render_template('dashboard.html')
7.6 总结

本章介绍了用户认证的重要性,以及如何使用Flask-Login扩展来管理用户注册、登录、登出和会话。

相关推荐
92year2 小时前
用Google ADK从零搭一个能调工具的AI Agent:Python实操全过程
python·ai·mcp
woxihuan1234562 小时前
SQL删除数据时存在依赖关系_设置外键级联删除ON DELETE
jvm·数据库·python
Jetev3 小时前
如何确定SQL字段是否为空_使用IS NULL与IS NOT NULL
jvm·数据库·python
蛐蛐蛐3 小时前
昇腾910B4上安装新版本CANN的正确流程
人工智能·python·昇腾
m0_702036533 小时前
mysql如何处理不走索引的OR查询_使用UNION ALL优化重写
jvm·数据库·python
庞轩px3 小时前
第七篇:Spring扩展点——如何优雅地介入Bean的创建流程
java·后端·spring·bean·aware·扩展点
ltl3 小时前
Q/K/V 三件套:把 Bahdanau 抽象成一个公式
后端
2401_846339564 小时前
MySQL在云环境如何选择存储类型_SSD与高性能云盘配置建议
jvm·数据库·python
2601_957780844 小时前
Claude 4.6 对阵 GPT-5.4:2026 开发者大模型 API 选型深度解析
人工智能·python·gpt·ai·claude
2601_957780844 小时前
GPT-5.5 深度解析:2026年4月OpenAI旗舰模型的技术跨越与商业决策指南
大数据·人工智能·python·gpt·openai