FastHTML 使用 Beforeware 进行身份验证和授权,允许你在处理请求之前执行一些操作,例如检查用户的身份或权限。
以下是如何使用 Beforeware 进行身份验证和授权的示例:
from fasthtml.common import *
from starlette.responses import RedirectResponse
app, rt = fast_app()
# 定义 Beforeware 函数
def user_auth_before(req, sess):
auth = sess.get('auth', None)
if not auth:
return RedirectResponse('/login', status_code=303)
# 创建 Beforeware 对象
beforeware = Beforeware(user_auth_before)
# 将 Beforeware 对象添加到 FastHTML 应用程序
app = FastHTML(before=beforeware)
@rt("/protected")
def get():
return Titled("Protected Page")
# 使用 Beforeware 保护受保护的路由
在这个例子中,我们定义了一个名为 user_auth_before
的 Beforeware 函数,它检查会话中是否存在 auth
键,该键表示用户的身份。如果不存在,它将用户重定向到登录页面。
我们创建了一个名为 beforeware
的 Beforeware 对象,并将其添加到 FastHTML 应用程序中。然后,我们定义了一个名为 protected
的视图函数,并使用 Beforeware 来保护它。
以下是一些额外的说明:
- Beforeware: Beforeware 是在处理请求之前执行的函数。
- Beforeware 范围: Beforeware 函数可以访问请求和会话对象。
- Beforeware 跳过: 你可以指定跳过 Beforeware 函数的路径或模式。
- Beforeware 应用程序: 你可以将 Beforeware 对象添加到 FastHTML 应用程序中,并在处理请求之前执行它。
FastHTML 的文档和教程提供了更多关于 Beforeware 的详细信息,帮助你快速入门。