我目前正在使用此处找到的代码:
http://flask.pocoo.org/snippets/8/
我相应地装饰我的功能,以便在请求特定管理页面时让管理员进行身份验证。但是,我没有要求管理员在每次管理页面时都保持身份验证,而是注意到它以某种方式跟踪会话,并且在成功进行一次身份验证后不再需要身份验证。每次管理员请求给定的装饰管理页面时,是否有某种方法强制烧瓶重新进行身份验证?
答案 0 :(得分:0)
使用附带的代码段,强制用户每次请求给定页面时都没有好办法登录。
这是因为该代码段正在使用HTTP Basic Auth,并且没有好办法要求浏览器停止发送该标头。
答案 1 :(得分:0)
您正在寻找的是可以使用自定义装饰器完成的。您可以使用下面的示例。请注意,您的情况会有所不同,但您可以将其作为指南。
from web import app, has_role
@app.route("/admin/my_page")
@login_required
@has_role(role="admin")
def admin_my_page():
//do stuff
然后,在您的项目init或包含文件中,您可以添加以下内容:
def has_role(role=None):
def _initial_decorator(view_func):
def _decorator(*args, **kwargs):
response = view_func(*args, **kwargs)
if g.user.user_level != role:
from flask import redirect, url_for
return redirect(url_for("no_access"))
return response
return wraps(view_func)(_decorator)
return _initial_decorator
这应该可以让您了解如何创建自定义装饰器,然后检查角色权限。您可以根据需要将其展开。您可以放置引擎逻辑或其他检查以适合您的项目。