flask实现登录认证完整代码
时间: 2023-08-12 20:32:56 浏览: 45
以下是使用 Flask 实现登录认证的完整代码示例:
```python
from flask import Flask, render_template, request, redirect, url_for, session
import hashlib
app = Flask(__name__)
app.secret_key = 'your_secret_key' # 设置 session 密钥
# 用户数据,可以从数据库中获取
users = {
'admin': '21232f297a57a5a743894a0e4a801fc3', # admin 的密码是 'admin'
'guest': '084e0343a0486ff05530df6c705c8bb4', # guest 的密码是 'guest'
}
# 登录页面
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form.get('username')
password = request.form.get('password')
if username in users and hashlib.md5(password.encode()).hexdigest() == users[username]:
session['username'] = username # 设置 session
return redirect(url_for('index'))
else:
return render_template('login.html', message='用户名或密码错误')
else:
return render_template('login.html')
# 主页
@app.route('/')
def index():
if 'username' in session:
return render_template('index.html', username=session['username'])
else:
return redirect(url_for('login'))
# 注销
@app.route('/logout')
def logout():
session.pop('username', None) # 删除 session
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True)
```
说明:
1. 首先,我们需要在 Flask 应用中设置一个 `secret_key`,用于加密 session 数据。
2. `users` 字典中存储了用户数据,包括用户名和经过 md5 加密后的密码。
3. `login` 路由处理用户登录请求,从表单中获取用户名和密码,并与 `users` 中存储的数据进行比对。如果匹配成功,则设置 session 并重定向到主页;否则返回登录页面并显示错误信息。
4. `index` 路由处理主页请求,如果用户已经登录,则返回主页模板并传递用户名;否则重定向到登录页面。
5. `logout` 路由处理注销请求,删除 session 并重定向到登录页面。
以上是一个简单的登录认证实现,可以根据实际需求进行修改和扩展。