我目前使用的代码在这里:
http://flask.pocoo.org/snippets/8/
并且我相应地装饰我的函数,以便在请求特定的管理页面时让管理员进行身份验证。然而,我注意到,它以某种方式跟踪会话,并且在成功通过一次身份验证后不再需要身份验证,而不是要求管理员在每次管理页面都保持身份验证。有没有办法强制flask在每次管理员请求给定装饰的管理页面时重新进行身份验证?
发布于 2016-04-27 05:54:09
使用包含的代码片段,没有什么好方法可以强制用户在每次请求给定页面时都登录。
这是因为该代码片段正在使用HTTP Basic Auth,并且没有好的方法来要求浏览器停止发送该标头。
发布于 2016-04-27 22:18:58
你正在寻找的东西可以用一个定制的装饰器来完成。您可以使用下面的示例。请注意,您的情况将有所不同,但您可以将此作为指导。
from web import app, has_role
@app.route("/admin/my_page")
@login_required
@has_role(role="admin")
def admin_my_page():
//do stuff然后,您可以在项目初始化或包含文件中添加以下内容:
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这至少可以让您了解如何创建自定义装饰器,然后检查角色权限。您可以将其扩展到您需要的任何位置。您可以放置引擎逻辑或其他检查以适合您的项目。
https://stackoverflow.com/questions/36875256
复制相似问题