我是F3的新手,我刚刚实施了基于表单的登录系统(使用Auth插件)。它有效,但我未登录的支票看起来像这样:
if (!$f3->get('SESSION.user')) $f3->reroute('/login');
我所指的例子,做了这个,这似乎更正确:
if (!$f3->get('SESSION.user')) $f3->error(401);
但是,此401
错误显示一个简单的错误页面。我希望它发送回登录表单(位于/login
)以及错误说明"您必须登录"我希望此回复为401
,而不是403
或200
。
我是否正确期待这种行为或401
仅对HTTP Basic Auth有效而不是基于表单的自定义身份验证?
答案 0 :(得分:4)
您可以使用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>