如果用戶沒有登錄我想覆蓋現有的控制器,並調用auth/login之一,而不是保持瀏覽器URI的機智。 (每個用戶必須登錄才能使用該站點)代碼點火器2 - 控制器/方法覆蓋
我已經嘗試過預控制器掛鉤,但它太早。此時auth庫尚未實例化。 由於目標控制器已被實例化,後控制器掛鉤已經太晚了。
編輯庫的構造似乎也沒有意義,因爲它已經被創建..所以我有點卡住..
任何想法嗎? :) ..
感謝
如果用戶沒有登錄我想覆蓋現有的控制器,並調用auth/login之一,而不是保持瀏覽器URI的機智。 (每個用戶必須登錄才能使用該站點)代碼點火器2 - 控制器/方法覆蓋
我已經嘗試過預控制器掛鉤,但它太早。此時auth庫尚未實例化。 由於目標控制器已被實例化,後控制器掛鉤已經太晚了。
編輯庫的構造似乎也沒有意義,因爲它已經被創建..所以我有點卡住..
任何想法嗎? :) ..
感謝
我會覆蓋默認控制器並在每個控制器中擴展。下一個代碼./app/core/MY_Controller.php:創建一個新的文件
class Secure_Controller extends CI_Controller {
function __construct() {
parent::__construct();
/* replace this code with yours */
if(!$this->session->userdata('logged_in')) {
redirect(base_url() . 'login', 'refresh'); // your login url
}
}
}
然後,使用每個控制器此代碼,您應該記錄的用戶
class Main extends Secure_Controller {
你有沒有考慮剛保存的URI來flashdata,訪問者重定向到另一個控制器(登錄頁面),然後只是把引薦到一個隱藏的表單字段?我在使用Codeigniter的一個網站上做同樣的事情,它工作正常。唯一的區別是在這個過程中URI並不完整。
我可以訪問認爲它認爲我不知道「如何」確定是..如果黑客阻止任何重定向發生不會控制器只是繼續和完成..重定向是否停止代碼點火器執行過程? – Lee
也許這個問題的答案對你來說是一樣的嗎? CodeIgniter only allow access to certain controllers when logged in
(如果是這樣,不要忘記用「parent :: __ construct();」)替換「function __construct()」和「parent :: Controller();」中的「function className()
很好的答案。這將顯示你如何做到這一點http://philsturgeon.co.uk/news/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY –
感謝您的答覆。我將這與一個名爲_remap的方法結合起來作爲一種代理。再次感謝。 – Lee