flask 登录跳转 小工程
时间: 2023-08-15 11:05:27 浏览: 38
好的,我可以为您提供一个简单的 Flask 登录跳转的小工程。
首先,您需要安装 Flask 和 Flask-Login 扩展,可以使用以下命令进行安装:
```
pip install Flask
pip install Flask-Login
```
接下来,创建一个名为 `app.py` 的 Python 文件,并将以下代码复制到文件中:
```python
from flask import Flask, redirect, render_template, request
from flask_login import LoginManager, UserMixin, login_required, login_user, logout_user
app = Flask(__name__)
app.secret_key = 'secret-key' # 设置 secret_key,用于 session 加密
login_manager = LoginManager()
login_manager.init_app(app)
# 模拟数据库中的用户信息
users = {
'test': {'password': '123456'}
}
# 定义一个 User 类,继承自 UserMixin
class User(UserMixin):
pass
# 加载用户信息的回调函数
@login_manager.user_loader
def load_user(user_id):
user = User()
user.id = user_id
return user
# 登录页面
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
if username in users and password == users[username]['password']:
user = User()
user.id = username
login_user(user)
return redirect('/')
else:
return render_template('login.html', error=True)
else:
return render_template('login.html', error=False)
# 首页,需要登录才能访问
@app.route('/')
@login_required
def index():
return 'Hello, World! <a href="/logout">Logout</a>'
# 登出
@app.route('/logout')
@login_required
def logout():
logout_user()
return redirect('/login')
if __name__ == '__main__':
app.run()
```
在这个小工程中,我们定义了一个 `User` 类,继承自 `UserMixin`,用于存储用户信息。我们还定义了一个 `load_user` 函数,用于加载用户信息的回调函数。
在登录页面 `/login` 中,我们使用 POST 请求提交用户名和密码,并检查是否与模拟的用户信息匹配。如果登录成功,我们创建了一个 `User` 实例,并使用 `login_user` 函数将其登录。登录成功后,我们重定向到首页 `/`。
在首页中,我们使用 `@login_required` 装饰器,表示需要登录才能访问。如果用户未登录,则会自动重定向到登录页面。
在登出页面 `/logout` 中,我们使用 `logout_user` 函数将用户登出,并重定向到登录页面。
最后,在 `if __name__ == '__main__':` 下启动应用程序,可以使用以下命令进行启动:
```
python app.py
```
这样就完成了一个简单的 Flask 登录跳转的小工程。希望能对您有所帮助!