如何在 Fat-Free Framework 中显示自定义 401 页面?

How do I display a custom 401 page in Fat-Free Framework?

我是 F3 的新手,我刚刚实现了一个基于表单的登录系统(使用 Auth 插件)。它有效,但我的未登录检查看起来像这样:

if (!$f3->get('SESSION.user')) $f3->reroute('/login');

我所指的例子是这样做的,这似乎更正确:

if (!$f3->get('SESSION.user')) $f3->error(401);

但是,这个 401 错误显示了一个简单的错误页面。我希望它发回登录表单(位于 /login)以及一条错误 "You must be logged in",我希望此响应是 401 而不是 403200.

我对这种行为的预期是否正确,或者 401 仅对 HTTP 基本身份验证有效,对基于表单的自定义身份验证无效?

您可以使用 ONERROR 挂钩自定义错误响应。

所以在你的情况下,你可以这样做:

$f3->ONERROR=function($f3) {
  if ($f3->get('ERROR.code')==401) {
    // custom behaviour on 401
    echo \Template::instance()->render('error-401.htm');
  } else
    // default behaviour otherwise
    return FALSE;
};
<!-- error-401.htm -->
<h1>This page requires authorization</h1>
<a href="/login?path={{ @PATH }}">Click here to sign in</a>