Настройка Codeigniter HMVC с авторизацией танка

У меня возникли проблемы с правильной настройкой работающей версии Codeigniter 2.0.3 с hmvc и авторизацией танка (настроенной как модуль). Я правильно установил CI, а затем установил HMVC, следуя этим указаниям https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home

Я отлично добираюсь до моего приветственного контроллера/представления, что означает, что HMVC работает. Затем я пытаюсь добавить авторизацию танка в проект, добавив ее в папку в папке модулей. У него есть правильный контроллер / вид / модель и т. Д., Настройка в авторизации танка. Я даже добавил в маршруты что-то вроде

$route["auth"]="авторизация/логин";

Я также расширил контроллер в модуле аутентификации до MX_Controller, как указано. Также в конструкторе у меня есть:

$this->load->helper(array('form', 'url'));
    $this->load->library('form_validation');
    $this->load->library('security'); <--failing to load this

    $this->load->library('tank_auth');
    $this->lang->load('tank_auth');
     $this->form_validation->CI =& $this;

Кажется, что он перенаправляется на модуль, но выдает ошибку::

Была обнаружена ошибка

Не удалось загрузить запрошенный класс: безопасность

Что я делаю неправильно? Есть ли у кого-нибудь работающая установка CI с HMVC и авторизацией танка в качестве модуля, чтобы я мог посмотреть, как это делается? Я новичок в HMVC, спасибо


person CI_Guy    schedule 30.08.2011    source источник
comment
Существует ли файл security.php в папке с библиотекой?   -  person Tobias    schedule 30.08.2011
comment
файл security.php является частью самого codeigniter, поэтому он не находится в папке modules/auth/libraries/.... Должен ли я захватить экземпляр CI, чтобы вызывать его библиотеки/помощники в конструкторе контроллера модулей?   -  person CI_Guy    schedule 30.08.2011
comment
Поэтому я изменил $this-›load-›library('security'); к $this-›load-›helper('security'); и теперь возникает новая ошибка, я думаю, когда он пытается загрузить библиотеку tank_auth, говорит, что файл конфигурации tank_auth.php не может быть найден.. хотя модули/modulename/config/tank_auth.php целы. Не уверен, почему он нашел это, но я предполагаю, что это похоже на другие мои проблемы.   -  person CI_Guy    schedule 30.08.2011
comment
В CodeIgniter есть разные виды security-файлов, один из них вспомогательный, а другой используется для экранирования данных при отправке в базу данных.   -  person Tobias    schedule 30.08.2011
comment
ну, исходная авторизация танка требует безопасности библиотеки, а не помощника, аутентификация танка использует только собственную библиотеку безопасности CI и не предоставляет свою собственную   -  person CI_Guy    schedule 30.08.2011
comment
не уверен, почему его НЕ находят, я хотел сказать в предыдущем посте, но было слишком поздно, чтобы редактировать его.   -  person CI_Guy    schedule 30.08.2011
comment
Если вы создаете новый модуль с контроллером в нем и загружаете только библиотеку безопасности - вы получаете ту же ошибку?   -  person Tobias    schedule 30.08.2011
comment
да, только что попробовал с модулем, который включал только контроллер с вызовом: $this-›load-›library('security'); и я получаю ту же ошибку, что и раньше, но если я изменю ее на $this-›load-›helper('security'), все будет работать нормально. Это новая установка codeigniter, поэтому я не удалял никаких оригинальных библиотек/помощников и т. д.   -  person CI_Guy    schedule 30.08.2011
comment
Что произойдет, если вы поместите новый контроллер в исходную папку контроллера? (не внутри модуля) и попробовать то же самое? Может быть какая-то настройка в HMVC, которая все портит.   -  person Tobias    schedule 30.08.2011
comment
до сих пор не понимаю, почему он не может найти файл конфигурации auth_tank   -  person CI_Guy    schedule 30.08.2011
comment
Если я создам обычный контроллер (не модуль) и попытаюсь загрузить библиотеку, он выдаст ту же ошибку.   -  person CI_Guy    schedule 30.08.2011
comment
Я бы посоветовал вам заново скачать и переустановить codeigniter с нуля, и на каждом шагу старайтесь все отлаживать и тестировать (особенно $this-›load-›library('security')). Когда вы найдете источник проблемы, вам будет намного легче найти способ ее решения.   -  person Tobias    schedule 30.08.2011
comment
Я использую другую копию той же установки только без HMVC, и проверка подлинности танка вызывает библиотеку безопасности просто отлично ... так что еще это может быть?   -  person CI_Guy    schedule 30.08.2011
comment
Я переделал ci reinstall и hmv шаг за шагом, и я получаю ту же ошибку с авторизацией танка. Почему разработчик hmvc вообще удосужился сделать это без документации... глупо. Я устал расстраиваться.. отказываюсь от HMVC   -  person CI_Guy    schedule 30.08.2011
comment
у кого-нибудь есть ci install w tank auth, работающий через hmvc? я следовал указаниям и потерялся   -  person CI_Guy    schedule 30.08.2011
comment
Я попытался настроить hmvc и CI 2.0.3 и сделал простой модуль только с контроллером, чтобы попытаться загрузить библиотеку безопасности, и я столкнулся с той же проблемой. это без попытки установить авторизацию танка. Я следовал инструкциям, идеально подходящим как для установки hvmc, так и для CI. Можно ли заархивировать файлы, чтобы кто-нибудь мог посмотреть, что я делаю? было бы непрактично пытаться скопировать и вставить все   -  person CI_Guy    schedule 30.08.2011


Ответы (7)


Я нашел ту же проблему, но я решил, просто добавив комментарий к

$this->load->library('security');

поэтому это будет выглядеть так:

//$this->load->library('security');

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

person Jorch    schedule 10.10.2011
comment
попробуйте это: $this-›load-›helper('security'); - person Haseeb; 18.05.2015
comment
и замените $this->security->xss_clean(); на `xss_clean(); - person Vijay Sharma; 29.09.2017

теперь он находится в Helper в соответствии с руководством пользователя CodeIgniter 3.0

пытаться:

$this->load->helper('security');
person Haseeb    schedule 18.05.2015
comment
так вы имеете в виду, что это помощник, а не библиотека - person Muddasir Abbas; 18.05.2015

Я исправляю это, создавая файл Security.php в каталоге application/libraries со следующим кодом:

require_once(BASEPATH.'core/Security.php');

class Security extends CI_Security { }
person proczek    schedule 02.09.2012

Я нашел решение, я просто взял файл security.php из папки system/core codeigniters и поместил его в system/libraries.

person CI_Guy    schedule 31.08.2011

  • переместить файл security.php из system/core в system/libraries

  • затем измените core/codeigniter.php строку номер 204 с $SEC =& load_class('Security', 'core'); на $SEC =& load_class('Security', 'libraries');

person Kevikidy    schedule 04.10.2011

Security.php присутствует в «codeigniter/system/core/Security.php», поэтому укажите этот путь, и ваша проблема будет легко решена.

load->library('../core/security');
person TeamG    schedule 02.04.2013

Я прочитал руководство пользователя CodeIgniter 3.X и обнаружил, что «Безопасность» теперь доступна в качестве «помощника».

Итак, вам нужно изменить это;

$this->load->library('security');

в

$this->load->helper('security');

Фильтрация XSS

Класс Input имеет возможность автоматически фильтровать ввод, чтобы предотвратить атаки с использованием межсайтовых сценариев. Если вы хотите, чтобы фильтр запускался автоматически каждый раз, когда он сталкивается с данными POST или COOKIE, вы можете включить его, открыв файл application/config/config.php и установив это:

$config['global_xss_filtering'] = TRUE;

Вам нужно прочитать руководство пользователя CodeIgniter 3.0, в котором так много изменений и реализаций, или пожалуйста, обратитесь к журналу изменений.

person Parth Chavda    schedule 20.01.2016