我正在使用基于 Werkzeug 的 Flask 微框架,它使用 Python。
在每个受限页面之前都有一个装饰器来确保用户已登录,如果他们未登录,则当前将其返回到登录页面,如下所示:
# Decorator
def logged_in(f):
@wraps(f)
def decorated_function(*args, **kwargs):
try:
if not session['logged_in']:
flash('Please log in first...', 'error')
return redirect(url_for('login'))
else:
return f(*args, **kwargs)
except KeyError:
flash('Please log in first...', 'error')
return redirect(url_for('login'))
return decorated_function
# Login function
@app.route('/', methods=['GET', 'POST'])
def login():
"""Login page."""
if request.method=='POST':
### Checks database, etc. ###
return render_template('login.jinja2')
# Example 'restricted' page
@app.route('/download_file')
@logged_in
def download_file():
"""Function used to send files for download to user."""
fileid = request.args.get('id', 0)
### ... ###
登录后,它需要将用户返回到将他们带到登录页面的页面。它还需要保留诸如传递的变量之类的东西(即整个链接基本上是 www.example.com/download_file?id=3 )
有谁知道如何做到这一点?
谢谢您的帮助 :-)