如何在 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
而不是 403
或 200
.
我对这种行为的预期是否正确,或者 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>
我是 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
而不是 403
或 200
.
我对这种行为的预期是否正确,或者 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>