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

时间:2015-11-16 07:03:19

标签: php authentication url-redirection fat-free-framework

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

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

我所指的例子,做了这个,这似乎更正确:

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

但是,此401错误显示一个简单的错误页面。我希望它发送回登录表单(位于/login)以及错误说明"您必须登录"我希望此回复为401,而不是403200

我是否正确期待这种行为或401仅对HTTP Basic Auth有效而不是基于表单的自定义身份验证?

1 个答案:

答案 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>