2024-04-26 01:19:23 发布
网友
我正在使用Flask,我想保护/admin路径下的所有内容。在
我怎么能做到呢?我相信有一种比在每个函数中检查会话更好的方法。在
我认为,实现这一点最直接的方法是使用类似于in this snippet的蓝图。然后,当URL以/admin开头时,您可以在每个请求之前运行一些代码,并在这些代码中执行身份验证。在
/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修饰符给出了它正在包装函数的属性的函数,该函数作为它的第一个参数。或者,将您的视图应用于:
@functools.wraps(view)
functools.wraps
任何未通过身份验证检查的用户现在都将被重定向到别处,这样做的用户将能够像往常一样看到视图。decorator是按从下到上的顺序应用的,因此请确保将它放在任何其他进行函数注册的decorator之后(即@app.route)。在
@app.route
我认为,实现这一点最直接的方法是使用类似于in this snippet的蓝图。然后,当URL以
/admin
开头时,您可以在每个请求之前运行一些代码,并在这些代码中执行身份验证。在如果另一种方式无法写入或修饰会话,则会出现另一种方法。我不知道你对python了解多少,但是decorator是一个接受一个函数并返回另一个函数的函数。基本上,它是一个函数修饰符。下面是一个decorator,它应该告诉您如何编写自己的代码来检查会话:
如您所见,我们有一个接受view函数的函数,然后定义一个名为inner的新函数,该函数检查身份验证,如果成功,则调用原始视图。行
^{pr2}$@functools.wraps(view)
是使用修饰符的一个例子;functools.wraps
修饰符给出了它正在包装函数的属性的函数,该函数作为它的第一个参数。或者,将您的视图应用于:任何未通过身份验证检查的用户现在都将被重定向到别处,这样做的用户将能够像往常一样看到视图。decorator是按从下到上的顺序应用的,因此请确保将它放在任何其他进行函数注册的decorator之后(即
@app.route
)。在相关问题 更多 >
编程相关推荐