Использование tank_auth с несколькими пользователями и HMVC - PullRequest
0 голосов
/ 26 декабря 2011

Использование Tank Auth впервые вместе с HMVC. В моем приложении есть 2 типа пользователей: один студент, другой - институт.
Я создал два модуля для каждого типа пользователя и разделил библиотеку авторизации резервуара, причем регистрация пользователя, логин и таблицы отличаются друг от друга.

Теперь, если я попытаюсь добавить любую другую страницу, которая является общей для обоих пользователей, например домашнюю страницу, какую библиотеку следует использовать.
Я знаю, что должно быть лучшее решение для решения многопользовательской проблемы. Пожалуйста, дайте мне знать, где я делаю неправильно. И что мне делать, чтобы решить эту проблему.

Ответы [ 2 ]

1 голос
/ 26 декабря 2011

Вы правы, есть лучший способ справиться с этим. Дублирование вашей системы пользователя / регистрации - неправильный путь.

Вам необходимо изменить TankAuth, включив в него столбец типа пользователя, а затем проверить этот тип пользователя. Я бы предложил новый столбец в таблице 'users' для 'user_role':

https://github.com/ilkon/Tank-Auth/blob/master/schema.sql

Вы можете обрабатывать user_type как int или enum. Я бы склонялся к int, так как enum сложнее изменить позже. Вы также можете добавить новую таблицу для user_roles, но я обычно просто храню их в файле конфигурации.

После изменения схемы вам необходимо добавить ссылку на новый столбец (вместе с возможными параметрами) в коде Tank_Auth. Вам нужно будет включить его в создание, обновление (данные передаются в модель из контроллера аутентификации резервуара: controllers / auth.php) и функции поиска. Я бы добавил поиск по user_role также в модель tank_auth (application / models / tank_auth / users.php):

function get_user_by_role($role)
{
$this->db->where('LOWER(user_role)=', strtolower($role));

$query = $this->db->get($this->table_name);
if ($query->num_rows() == 1) return $query->row();
return NULL;
}

Наконец, вы захотите установить роль пользователя для сеанса при входе в систему, чтобы вы могли отслеживать тип пользователя (и какой контент / функциональность у них есть доступ).

Я сам использовал Tank_Auth для нескольких проектов.

0 голосов
/ 27 декабря 2011

Исходя из того, что сказал Кельвин, codeigniter делает хорошую работу по защите вашего приложения, авторизация танка проверит их, однако вам нужны разные уровни пользователя, это обычно попадает под разрешения.Ваша задача как разработчика заключается в том, чтобы удостовериться, что codeigniter выполняет свои проверки безопасности через CSRF и XSS (я бы посоветовал вам делать это в каждом правиле проверки, а не в глобальном масштабе, особенно если вашим администраторам нужно добавить любые теги, для которых suc не разрешен как «скрипт»).).Вы можете увидеть, как я лично настраиваю свои контроллеры независимо от моей библиотеки Auth здесь ...

Вам нужно иметь строку в вашей таблице пользователей, называемую "permissions", которая является либо сериализованным массивомили в кодировке json, или вы можете выполнить поиск в Google по битовой маске разрешений, для чего требуется поле int

...