Проблема аутентификации CodeIgniter - PullRequest
0 голосов
/ 05 октября 2011

Я сделал контроллер аутентификации CI, позволяющий пользователю войти на сайт, и после входа я перенаправляю его на ранее посещенный URL, который я продолжаю использовать:

$this->session->set_flashdata( 'return_url', current_url() );

К сожалению, это вызывает проблемы. Каждый раз, когда пользователь открывает более одной вкладки в браузере, эта переменная перезаписывается, и после успешного входа в систему пользователь перенаправляется на один и тот же URL-адрес во всех вкладках.

Итак, мой вопрос: Возможно ли загрузить собственный контроллер внутри MY_Controller? (MY_Controller - это класс extends CI_Controller)

Я пытался использовать (внутри конструктора MY_Controller), но это не сработало:

$CI =& get_instance();
$CI->router->set_class('authentication');
$CI->router->set_method('login');

Редактировать: я буду признателен за любые другие идеи решения этой проблемы.

Ответы [ 3 ]

2 голосов
/ 05 октября 2011

решением было бы не сохранить возвращаемый URL-адрес в сеансе var, а передать его в параметре get / post (в случае get, правильно закодировано, base64, т. Е.).Единственное дополнение должно быть стандартным URL-адресом возврата, если не установлен (действительный) URL-адрес возврата

--- EDIT, почему я говорил о base64, когда в php есть только функция для этого;urlencode твой друг!http://nl3.php.net/urlencode

0 голосов
/ 05 октября 2011

Когда вы перенаправляете не авторизованных пользователей на страницу входа в систему, сохраняйте скрытую переменную «redirect_to», в которой будет храниться значение, откуда прибыл пользователь. $ _SERVER ['HTTP_REFERRER'] можно использовать. Затем после входа в систему просто перенаправьте на значение «redirect_to». Таким образом, вам не нужно устанавливать flashdata для перенаправления пользователей с URL-адреса, с которого они пришли.

0 голосов
/ 05 октября 2011

Чтобы загрузить собственный контроллер внутри контроллера (например, MY_Controller), используйте php CURL для доступа к контроллеру аутентификации.

Это может повлиять на производительность, поскольку это дорогостоящий процесс для каждого запроса.

Другие варианты могут включать использование системы базового класса (см. http://philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY) или создание автоматически загружаемой библиотеки для проверки подлинности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...