每个页面视图都需要新登录

时间:2016-04-26 20:38:16

标签: python authentication flask

我目前正在使用此处找到的代码:

http://flask.pocoo.org/snippets/8/

我相应地装饰我的功能,以便在请求特定管理页面时让管理员进行身份验证。但是,我没有要求管理员在每次管理页面时都保持身份验证,而是注意到它以某种方式跟踪会话,并且在成功进行一次身份验证后不再需要身份验证。每次管理员请求给定的装饰管理页面时,是否有某种方法强制烧瓶重新进行身份验证?

2 个答案:

答案 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

这应该可以让您了解如何创建自定义装饰器,然后检查角色权限。您可以根据需要将其展开。您可以放置​​引擎逻辑或其他检查以适合您的项目。