用flask框架写未登录不能访问后面的介绍界面a.html等
时间: 2024-02-01 20:15:44 浏览: 26
可以在Flask中使用装饰器来限制未登录用户的访问。首先,在登录成功后,将用户的登录状态存储在会话(session)中,示例代码如下:
```python
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
# 验证用户名和密码
if username == request.form['username'] and password == request.form['password']:
# 登录成功,将用户信息存储在session中
session['username'] = username
return redirect(url_for('index'))
else:
flash('Invalid username or password')
return render_template('login.html')
```
接下来,定义一个装饰器`login_required`,用于限制未登录用户的访问。示例代码如下:
```python
from functools import wraps
from flask import session, redirect, url_for
def login_required(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if 'username' not in session:
return redirect(url_for('login'))
return f(*args, **kwargs)
return decorated_function
```
这个装饰器会检查session中是否存在用户名,如果不存在则重定向到登录页面。接下来,在需要限制访问的视图函数上使用`@login_required`装饰器即可,示例代码如下:
```python
@app.route('/a')
@login_required
def a():
return render_template('a.html')
```
这样,用户在未登录时访问`/a`页面会被重定向到登录页面。如果已登录,则能够正常访问`/a`页面。