簡體   English   中英

Codeigniter中的重定向循環,具有來自基本控制器的單個重定向

[英]Redirect loop in Codeigniter with single redirect from base controller

我有這個基本控制器:

class TCMS_Controller extends  CI_Controller{
    public function __construct(){
        parent::__construct();
        if( ! $this->session->userdata('logged_in')){
            redirect('admin/authenticate/login');
        }
        //Loop to get all settings in the "globals" table
        foreach($this->Settings_model->get_global_settings() as $result){
            $this->global_data[$result->key] = $result->value;
        }
    }
}

所以我有這個基本的重定向:

redirect('admin/authenticate/login'); 如果用戶未登錄。

我也有此設置從網址中刪除index.php

的.htaccess:

Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond ${REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

以及下一個配置設置:

$config['base_url'] = 'http://something.herokuapp.com/';
$config['index_page'] = '';

當我嘗試訪問具有下一個地址的管理部分時:

http://something.herokuapp.com/admin/controller/method

如果我沒有登錄,我應該重定向到login頁面:

http://something.herokuapp.com/admin/authenticate/login

但是相反,我得到了一個重定向循環

ERR_TOO_MANY_REDIRECTS

我如何解決它?

頁面: http//tcms.herokuapp.com/

管理員部分: http : //tcms.herokuapp.com/admin/authenticate/login http://tcms.herokuapp.com/admin/dashobard

我確定您的admin (如果您的文件夾名稱為admin,則可以通過authenticate )控制器也擴展了TCMS_Controller 因此,當它重定向您的admin控制器時,它將再次執行TCMS_Controller的構造函數,並再次重定向到管理控制器,這將導致無限循環。

要解決這個問題,您需要制作一個不擴展TCMS_ControllerLogin控制器,而只擴展CI_Controller。如果用戶未登錄,則重定向到該控制器。

這個問題是在基本控制器中進行重定向是不好的做法,因為它可能導致重定向循環:

請參閱: 登錄用於用戶會話的Codeigniter重定向循環

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM