flask实现登录认证完整代码和前端代码
时间: 2024-03-12 12:47:56 浏览: 20
好的,以下是 Flask 实现登录认证的完整代码和前端代码示例:
Flask 后端代码:
```python
from flask import Flask, render_template, request, session, redirect, url_for
import hashlib
app = Flask(__name__)
app.secret_key = "secret key"
# 用户名和密码列表
users = {
"admin": "admin123",
"user1": "user123",
"user2": "user123"
}
# 登录页面
@app.route("/", methods=["GET", "POST"])
def login():
if request.method == "POST":
# 获取用户名和密码
username = request.form.get("username")
password = request.form.get("password")
# 判断用户名和密码是否正确
if username in users and users[username] == password:
# 密码正确,将用户信息存储到 session 中,重定向到主页
session["username"] = username
return redirect(url_for("home"))
else:
# 密码错误,返回登录页面并提示错误信息
return render_template("login.html", error="用户名或密码错误")
# GET 请求,返回登录页面
return render_template("login.html")
# 主页
@app.route("/home")
def home():
# 判断用户是否登录
if "username" in session:
# 已登录,返回主页
return render_template("home.html", username=session["username"])
# 未登录,重定向到登录页面
return redirect(url_for("login"))
# 注销
@app.route("/logout")
def logout():
# 删除 session 中的用户信息,重定向到登录页面
session.pop("username", None)
return redirect(url_for("login"))
if __name__ == "__main__":
app.run(debug=True)
```
HTML 前端代码:
登录页面 `login.html`:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>登录页面</title>
</head>
<body>
<h1>登录页面</h1>
{% if error %}
<p style="color: red">{{ error }}</p>
{% endif %}
<form method="POST" action="/">
<p>
<label for="username">用户名:</label>
<input type="text" name="username" id="username" required />
</p>
<p>
<label for="password">密码:</label>
<input type="password" name="password" id="password" required />
</p>
<p>
<input type="submit" value="登录" />
</p>
</form>
</body>
</html>
```
主页 `home.html`:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>主页</title>
</head>
<body>
<h1>主页</h1>
<p>欢迎您,{{ username }}!</p>
<p><a href="/logout">注销</a></p>
</body>
</html>
```
注意:这只是一个示例代码,实际项目中登录认证涉及到的安全问题非常多,需要进行更加严格的处理和控制,具体实现方式需要根据实际情况进行选择和调整。