假设您想要重定向用户,如果他们没有登录。目前我有这个:
def my_account():
if "user" not in session or not session["user"]:
return redirect('/')
...
def my_favourites():
if "user" not in session or not session["user"]:
return redirect('/')
...
但是现在我想重用检查用户是否登录的代码。但这需要session
对象。
我不确定我是否可以或应该在辅助函数中明确传递request
或session
对象。或者,如果还有另一种更优选的方式?
答案 0 :(得分:1)
你试过http://packages.python.org/Flask-Login/吗?我相信这是一个能够提供您所需要的内容的软件包。
答案 1 :(得分:1)
如果要编写可重用代码以验证用户是否已登录,建议使用一种方法是在视图函数上使用装饰器。例如,
@login_required
def do_something():
* pass
然后,您可以在下面定义此装饰器。然后,您可以使用request
和session
对象。此外,如果用户尚未登录,则会重定向到登录URL,然后在登录后转发到下一页。
def login_required(f):
* @wraps(f)
* def decorated_function(*args, **kwargs):
* if "user" not in session or not session["user"]:
* return redirect(url_for('login', next=request.url))
* return f(*args, **kwargs)
* return decorated_function