Библиотеки аутентификации и авторизации Codeigniter, которые хорошо работают вместе

Мне нужна функциональность для обработки аутентификации и некоторой базовой авторизации на основе ролей (просто заблокируйте некоторые страницы для одной роли и разрешите некоторые страницы для другой).

Я уже читал этот вопрос: Какова лучшая аутентификация и Библиотека авторизации для CodeIgniter?

Однако вопрос из 2009 года, так что, возможно, есть новая технология, которая сейчас работает лучше. Приветствуются любые предложения, особенно если вы использовали библиотеку.


person Francesco Belladonna    schedule 27.01.2012    source источник
comment
Я почти уверен, что это не то, что вы хотели услышать, но я предпочитаю проводить свои собственные занятия. Я не боюсь заново изобретать велосипед.   -  person Skittles    schedule 27.01.2012
comment
Это тоже правильный ответ, я подумаю об этом. Я боюсь, что это шифрование паролей, но я думаю, что это не так сложно с помощью простой хеш-функции.   -  person Francesco Belladonna    schedule 27.01.2012
comment
Я предпочитаю использовать соленый хэш. Что я обычно делаю, так это беру их текстовый пароль и добавляю к нему строку, полученную из элемента $config, который я называю $config['encryption_salt']. Затем я запускаю только что построенную строку через функцию sha1 php и сохраняю результат в базе данных. :)   -  person Skittles    schedule 27.01.2012
comment
Затем, когда вы хотите проверить введенный ими пароль во время входа в систему, просто возьмите то, что они опубликовали, добавьте к нему соль, sha1 и используйте это в своем операторе выбора для входа в систему или таблицы пользователей.   -  person Skittles    schedule 27.01.2012
comment
Что касается авторизации, я обычно создаю таблицу поиска разрешений в своей базе данных и назначаю пользователям значение permission_id в их записи пользователя. Затем мой сайт может быть условно разрешен или запрещен для действий на основе их разрешения permission_id.   -  person Skittles    schedule 27.01.2012
comment
Почему бы вам не опубликовать это как ответ?   -  person Francesco Belladonna    schedule 27.01.2012


Ответы (2)


Все известные мне библиотеки Auth ограничивают вас в той или иной форме из сумки. Обычно хорошей идеей является создание собственной библиотеки авторизации, разбивка ее на части, чтобы не ограничивать себя использованием нативной AR-программы codeigniters.

Для ролей/разрешений я обычно просто сохраняю объект json в моем столбце разрешений, скажем, users. Я предпочитаю это более сложной технике.

В моем основном контроллере (не ограничивающем) я просто создаю var разрешений (массив) и прокручиваю его внутри своих дочерних контроллеров, чтобы реализовать ограничение.

пример:

столбец SQL

`permissions` varchar(200) NOT NULL DEFAULT '["r", "u", "d"]';

главный контроллер

protected $permissions = array();

protected function _get_permissions()
{
   return (array)json_encode($this->user->permissions);
   //get permissions from user (array/object)
}

расширенные дочерние элементы

if(in_array('r', $this->permissions))
{
   //user can read something
}
person Philip    schedule 27.01.2012

Мне нравится ответ кегли, поэтому я публикую его здесь (он не публикует):

Я почти уверен, что это не то, что вы хотели услышать, но я предпочитаю проводить свои собственные занятия. Я не боюсь заново изобретать велосипед

Я предпочитаю использовать соленый хэш. Что я обычно делаю, так это беру их текстовый пароль и добавляю к нему строку, полученную из элемента $config, который я называю $config['encryption_salt']. Затем я запускаю только что построенную строку через функцию sha1 php и сохраняю результат в базе данных.

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

Если Skittle опубликует ответ, я отмечу его

person Francesco Belladonna    schedule 29.01.2012