0

ユーザーがログインしていない場合は、既存のコントローラーをオーバーライドして、ブラウザーのURIをそのままにして、代わりにauth/loginコントローラーを呼び出します。(サイトを使用するには、すべてのユーザーがログインする必要があります)

プレコントローラーフックを試しましたが、早すぎます。この時点では、認証ライブラリはインスタンス化されていません。ターゲットコントローラーがインスタンス化されているため、ポストコントローラーフックは遅すぎます。

ライブラリのコンストラクターを編集することも、すでに作成されているので無意味に思えます。だから私は少し立ち往生しています。

何かアイデアはありますか?:)。。

ありがとう

4

3 に答える 3

4

デフォルトのコントローラーをオーバーライドして、各コントローラーで拡張します。次のコードを使用して、新しいファイル./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 {
于 2011-08-26T14:00:53.827 に答える
0

おそらく、この質問への答えはあなたにとって同じでしょう?CodeIgniterは、ログイン時に特定のコントローラーへのアクセスのみを許可します

(その場合は、「functionclassName()」を「function__construct()」に、「parent :: Controller();」を「parent :: __construct();」に置き換えることを忘れないでください)

于 2011-08-16T17:46:19.247 に答える
0

URIをflashdataに保存し、訪問者を別のコントローラー(ログインページ)にリダイレクトしてから、リファラーを非表示のフォームフィールドに配置することを検討しましたか?私はCodeigniterを使用して私のサイトの1つで同じことをしていますが、それは正常に機能します。唯一の違いは、このプロセス中にURIが損なわれないことです。

于 2011-08-16T15:50:09.573 に答える