2015-11-16 3 views
0

Я новичок в F3, и я только что внедрил систему входа на основе формы (используя плагин Auth). Это работает, но мои не-авторизованы проверки выглядят следующим образом:Как отобразить пользовательскую страницу 401 в Fat-Free Framework?

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, а не для пользовательских форм на основе auth?

ответ

3

Вы можете настроить ответную ошибку с помощью крюка 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> 
+0

Да, я сделал ту же самую вещь вскоре после размещения вопроса и чтения http://stackoverflow.com/questions/ 19763414/обезжиренной-каркасный f3-заказ 404-страничная-и-другая-ошибка? RQ = 1 – aalaap

Смежные вопросы