2014-10-05 2 views
0

я пытаюсь построить приложение, в котором будут некоторыми группыCodeigniter Пусть Контроллеры пользователей доступа на основе ролей/Разрешения

Суперадминистратора, Модераторы, Арендаторы, пользователи

Для этого Super Admin будет иметь доступ ко всем страницам/представлениям и контроллерам. Но остальные группы будут иметь доступ к страницам/представлениям на основе ролей/разрешений

Я, однако, сделал основное меню, заполненное на основе групп пользователей, но проблема в том, что я столкнулся с этим.

Если пользователь входит в систему и имеет прямой доступ к странице со ссылкой, страница открывается, поскольку на контроллере нет ограничений.

Его часы, и я ударяю головой, чтобы выяснить, как ограничить не аутентичного пользователя открытием закрытой страницы/Просмотр.

Я вижу два пути,

  1. рестрикции кладем на каждый контроллер, поставив галочку, если пользователю разрешено просматривать этот контроллер. Но это будет утомительной работой, и я не уверен, правильно ли это.
  2. Поместите основную проверку в MY_Controller, которая запускается каждый раз при доступе к контроллеру. Это выглядит многообещающим, но я не уверен, как это сделать.

Если у кого-нибудь есть идея или прошла одна и та же проблема, пожалуйста, помогите мне найти решение.

ответ

0

Что я сделал в своем приложении, это расширение основного класса контроллера с помощью MY_Controller, и внутри там я создал две функции для двух групп пользователей. Затем при создании обычного контроллера вы расширяете его с помощью пользовательской функции. Например:

MY_Controller.php

class Super_admin extends CI_Controller{ 
    function __construct(){ 
     parent::__contstruct(); 
     //check for super admin privlidges 
    } 
} 

some_controller.php

class some_controller extends Super_admin{ 
    //do whatever you need in here 
} 
+0

да, но это только хорошо, если у вас есть только две группы. Что делать, если с течением времени может быть создано больше групп и групп, Ограничение их для просмотра некоторых контроллеров? Я реализовал Вариант 1. используя функции 'is_admin()' и 'is_allowed', но я хочу знать, можно ли по умолчанию применять эти функции на всех контроллерах? –

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