2017-02-09 4 views
16

У меня есть два приложения, разработанные в CodeIgniter, как работают на отдельном сервере, т.е.Интеграция/Миграция двух приложений CodeIgniter.

www.CI_App_1.com

и

www.CI_App_2.com

Теперь я хочу интегрировать CI_App_2 в CI_App_1 a поэтому после этого я могу позвонить default_controller из CI_App_2 из одной из ссылок из CI_App_1.

Моя структура папок:

htdocs : 
    -application_1 
     -application 

      -application_2 
       -application 
        -config 
         -autoload.php 
         -config.php 
         -routes.php 
        -controllers 
         -app_2_controller.php 
        -helpers 
        -libraries 
        -models 
         -app_2_model.php 
        -views 
         -app_2_view.php 
       -system 
       -.htaccess 
       -index.php 

      -config 
       -autoload.php 
       -config.php 
       -routes.php 
      -controllers 
       -app_1_controller.php 
      -helpers 
      -libraries 
      -models 
       -app_1_model.php 
      -views 
       -app_1_view.php 
     -system 
     -.htaccess 
     -index.php 

Я хочу получить доступ к CI_App_2 после пользователь logedin от CI_App_1. После аутентификации пользователя процесса может получить доступ к моему только CI_App_2, если пользователю пытается получить к нему доступ без аутентификации, получил сообщение об ошибке:

Доступ запрещен

я говорил следующие ссылки:

Call Controller method of CodeIgniter outside Application directory

CodeIgniter: Load controller within controller

How to load a controller from another controller in codeigniter?

Codeigniter : calling a method of one controller from other

http://www.techsirius.com/2013/01/load-controller-within-another.html

https://www.quora.com/Can-I-call-a-controller-function-that-resides-in-another-controller-in-CodeIgniter

http://www.devnetwork.net/viewtopic.php?f=72&t=131353

how to set up two codeigniter applications running on same server

https://www.codeigniter.com/user_guide/general/managing_apps.html

Но в приведенных выше ссылках они сказали, что это должно быть сделано с использованием структуры модуля HMVC, но никто не упоминает, что оба файла контроллера являются одними и теми же приложениями или разными. Я хочу получить доступ к default_controller из второго приложения в первое приложение.

Возможно ли это?

Любые виды помощи приветствуются. Заранее спасибо. Надеюсь, у тебя есть мой вопрос.

+1

Я думаю, что лучше всего перестроить немного иметь app_1 и app_2 на том же уровне (не вложенной) и создать новый метод аутентификации как для – Vickel

+0

Пожалуйста, дайте пример того, что вы хотите сказать. Потому что я попытался добавить default_controller из App2 в папку Controller App1. И переписывайте маршруты для них. Но это не сработало. –

+0

Похоже, вы хотите аутентификацию на разных серверах. [См. Этот ответ о пользовательском обработчике сеанса.] (Http://stackoverflow.com/questions/16243450/share-a-session-across-multiple-servers-with-different-domains) – ourmandave

ответ

2

Ну, лучше всего, чтобы вместо их слияния. вам необходимо сдвинуть

app2/controllers => app1/controllers/app2 
app2/views => app1/views/app2 

Таким образом, вы можете получить доступ к app2 внутри приложения1 с некоторым добавлением маршрутов.

Я должен порекомендовать не перекладывать весь код app2 в app1 как есть.

Это не будет хорошо.

+0

Но таким образом это позволит прямой доступ к URL-адресу App2. Без аутентификации с помощью App1. Потому что, если мы добавим некоторые маршруты, он будет напрямую обращаться к этому маршруту/URL-адресу. –

+0

Да, вы правы. Но используя маршруты, вы можете обойти аутентификацию App1 или связанные с ними барьеры. –

+0

На самом деле я хочу эту аутентификацию. Я не хочу их обойти. Другой разумный, создавая поддомену, он будет работать. Но без проверки подлинности App1 я хочу, чтобы пользователь напрямую обращался к App2. Это моя реальная проблема и вопрос. –

3

Следующая функция, установленная на application_1 default_controller, может быть ее работой.

public function _remap($method) { 
    $userdata = $this->session->userdata('user'); 
    if (!empty($userdata)) { 
     modules::run('application_2/controller/default_controller'); 
    } 
} 

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

  • Нет связанных вопросов^_^