я использую Ion_Auth
библиотека. И я обнаружил, что здесь легко реализовать аутентификацию. Но мой вопрос: как я могу использовать это для выполнения проверки на каждом контроллере?
В моей административной части у меня есть несколько пользователей, но каждый пользователь относится к определенной группе. Означает, что ни один пользователь не будет назначен для нескольких групп. Когда я проверил ion_auth
Пользователь может принадлежать нескольким группам. В этой части я просто получаю значение от index 0
и сделать его в качестве основного типа группы.
public function __construct() {
parent::__construct();
$this->load->library('my_auth');
$user_groups = $this->ion_auth->get_users_groups()->result_array();
$get_user_group = $user_groups[0]['id']; //hard coded!!! still finding a good way to prevent this
if (!$this->ion_auth->logged_in()) {
redirect('auth/login');
}
if (!$this->ion_auth->is_admin()) {
redirect('error/error_privilege');
}
$this->data['options'] = array(
'active_menu' => 'dashboard'
);
}
И еще одна вещь, которую я хочу, — как я могу сделать это, не включая все эти коды в каждый контроллер, для которого я хочу пройти аутентификацию?
Что я хочу, это выполнить аутентификацию
После получения типа группы, как я могу ограничить просмотр страницы?
Моя идея — после входа в систему, и если пользователь действителен, я назову его тип группы и сохраню его в сеансе. И я включу переменную flag с идентификатором группы пользователей (жестко запрограммированную) в конкретном представлении, и из этого я могу подтвердить просмотр страницы.
Просто так: здесь у меня есть меню навигации
Входящий список
Исходящий список
Входящий список
Исходящий список
И для конкретного контроллера
//inbound controller
public function __construct() {
parent::__construct();
$group_type = 1;
if(!$this->session->userdata('group_type') == 1) {
//warn user or redirect
}
}
Можете ли вы предложить мне лучший способ реализовать этот тип проверки?
Все ваши контроллеры должны расширять контроллер по умолчанию, который содержит всю логику, примененную до того, как произойдет рендеринг или манипулирование данными.
class PageController extends DefaultController {
/*
* logic for pages!
*/
}
куда DefaultController
на самом деле расширяет базу Controller
class DefaultController extends Controller {
/**
* And also checks the authorization as well
*/
public function __construct(){
//logic to check roles etc.
//redirect and flash session if failed, otherwise just return.
}
}
Других решений пока нет …