Создание профилей пользователей с помощью Kohana
-
09-09-2020 - |
Вопрос
Я использую Kohana 3, и мне трудно понять модуль аутентификации, даже если это то, что мне нужно.По сути, я хочу создать базовый сайт профиля пользователя с базовой защитой имени пользователя и пароля.
Как мне использовать существующие контроллеры...
class Controller_Profile extends Controller
{
function action_index( $user_id )
{
// User should already be authenticated by here I think
}
}
...и использовать их с какой-то системой аутентификации
Решение
Для Kohana 3 вам нужно будет зарегистрироваться. before
и не __construct
как предлагает JIStone.
public function before()
{
parent::before();
// This automatically checks for an auto login cookie (thanks kemo).
if ( ! Auth::instance()->logged_in())
{
// Redirect to a login page (or somewhere else).
$this->request->redirect('');
}
}
Достаточно просто для понимания.Вы можете поместить это в контроллер и иметь все контроллеры, которым требуется аутентификация, чтобы расширить ее.
Другие советы
Если вам потребуется, чтобы пользователь был зарегистрирован для всех страниц на контроллере, вы можете установить проверку в своем операторе __construct()
:
function __construct()
{
//Check roles for Access!!!!
parent::__construct();
$this->load_user();
if( ! $this->is_registered )
{
if(request::is_ajax())
die('This ajax call cannot be completed due to permission issues.');
// this will redirect from the login page back to this page
$this->session->set('requested_url', url::current());
url::redirect('user/login');
}
}
.
Это код, который мы используем, но это Kohana 2, а не 3, поэтому вам нужно немного настроить для ваших целей.
Я предоставил ссылку на короткий прохождение для установки и базового использования Модуль авторизации в Кохане 3
После того, как у вас есть рабочий процесс Auth, вы можете защитить определенные контроллеры, проверив зарегистрированные пользовательские и правильную роль аутентификации в методе до () или создаете базовый контроллер для всех ваших контроллеров, которые понадобится этот чек.Если пользователь не вошел в систему, перенаправляйте их на страницу входа в систему, если у них нет правильного уровня доступа (или роли), вы можете показать им страницу «Доступ запрещено».