22 Flask 用户登录逻辑实践

22 Flask 用户登录逻辑实践

在本节中,我们将实现一个简单的用户登录逻辑,利用 Flask 框架来处理用户认证。我们将使用 Flask-Login 扩展框架来管理用户会话。

环境准备

首先,确保你已经安装了 Flask 和 Flask-Login。你可以使用以下命令进行安装:

1
pip install Flask Flask-Login

创建 Flask 应用

首先,我们要创建一个基本的 Flask 应用并初始化 Flask-Login

1
2
3
4
5
6
7
8
9
10
11
from flask import Flask, render_template, redirect, url_for, request, flash
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user

app = Flask(__name__)
app.secret_key = 'your_secret_key'

login_manager = LoginManager()
login_manager.init_app(app)

# 用户数据示例
users = {'admin': {'password': 'admin123'}}

创建用户模型

我们将定义一个简单的用户模型。对于演示简洁性,我们将用户信息存储在一个字典中。

1
2
3
4
5
6
7
class User(UserMixin):
def __init__(self, id):
self.id = id

@login_manager.user_loader
def load_user(user_id):
return User(user_id)

登录视图

接下来,我们将创建一个登录视图,它将处理表单提交并验证用户。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']

user = users.get(username)
if user and user['password'] == password:
user_obj = User(username)
login_user(user_obj)
return redirect(url_for('protected'))

flash('用户名或密码错误')

return render_template('login.html')

登录模板

创建一个简单的登录表单 login.html:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!doctype html>
<html>
<head>
<title>登录</title>
</head>
<body>
<h1>用户登录</h1>
<form method="POST">
<input type="text" name="username" placeholder="用户名" required>
<input type="password" name="password" placeholder="密码" required>
<button type="submit">登录</button>
</form>
<p style="color:red;">{{ get_flashed_messages()[0] }}</p>
</body>
</html>

受保护的视图

为了确保只有已登录的用户可以访问某些页面,我们需要添加一个受保护的视图。

1
2
3
4
@app.route('/protected')
@login_required
def protected():
return f'欢迎,{current_user.id}!你已成功登录。'

注销功能

添加注销功能,让用户可以退出登录。

1
2
3
4
5
@app.route('/logout')
@login_required
def logout():
logout_user()
return redirect(url_for('login'))

运行应用

最后,添加运行 Flask 应用的代码:

1
2
if __name__ == '__main__':
app.run(debug=True)

总结

在本节中,我们实现了一个简单的用户登录逻辑,包括用户验证、登录和注销功能。我们使用了 Flask-Login 来管理用户会话,确保用户能够安全地访问受保护的内容。通过结合代码和示例,我们可以全面理解 Flask 的用户认证机制。

22 Flask 用户登录逻辑实践

https://zglg.work/flask/22/

作者

AI教程网

发布于

2024-08-08

更新于

2024-08-10

许可协议