如何才能要求对/admin路径下的任何内容进行身份验证?

2024-04-26 01:19:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Flask,我想保护/admin路径下的所有内容。在

我怎么能做到呢?我相信有一种比在每个函数中检查会话更好的方法。在


Tags: 方法函数路径flask内容admin
2条回答

我认为,实现这一点最直接的方法是使用类似于in this snippet的蓝图。然后,当URL以/admin开头时,您可以在每个请求之前运行一些代码,并在这些代码中执行身份验证。在

如果另一种方式无法写入或修饰会话,则会出现另一种方法。我不知道你对python了解多少,但是decorator是一个接受一个函数并返回另一个函数的函数。基本上,它是一个函数修饰符。下面是一个decorator,它应该告诉您如何编写自己的代码来检查会话:

import functools

def check_session(view):
    @functools.wraps(view)
    def inner(*args, **kwargs):
        if <test for auth>:
            return view(*args, **kwargs)
        else:
            return flask.redirect("/")
    return inner

如您所见,我们有一个接受view函数的函数,然后定义一个名为inner的新函数,该函数检查身份验证,如果成功,则调用原始视图。行@functools.wraps(view)是使用修饰符的一个例子;functools.wraps修饰符给出了它正在包装函数的属性的函数,该函数作为它的第一个参数。或者,将您的视图应用于:

^{pr2}$

任何未通过身份验证检查的用户现在都将被重定向到别处,这样做的用户将能够像往常一样看到视图。decorator是按从下到上的顺序应用的,因此请确保将它放在任何其他进行函数注册的decorator之后(即@app.route)。在

相关问题 更多 >