sql >> データベース >  >> RDS >> Mysql

特定のページをCodeigniterでのみログインしているユーザーに制限するためのベストプラクティスは何ですか?

    頭に釘を打ちましたが、もう少し効率的な方法があります。

    ベースコントローラーを一方向に拡張します(元々はPhil Sturgeonによって概説されたと思います)が、ここで要約します:

    この記事 を参照してください 非常に詳細な記述のために。

    しかし本質的に:

    <?php
    class MY_Controller extends Controller
    {
        function __construct()
        {
            parent::Controller();
            if (! $this->session->userdata('first_name'))
            {
                redirect('login'); // the user is not logged in, redirect them!
            }
        }
    }
    

    したがって、アクセスを制限する場合は、次のようにします。

    class Secret_page extends MY_Controller {
    
     // your logged in specific controller code
    }
    

    拡張コントローラーは、ユーザーがコンストラクターにログインしているかどうかを自動的にチェックします。

    方法については、おそらくuser_idを値として設定して、そのセット、またはおそらくユーザーの「グループ」かどうかを確認します。そうすれば、システムでユーザー権限とさまざまなレベルのアクセスを取得できます。

    これが少し役立つことを願っています。

    編集

    これをapplication/config.php

    に追加します
    /*
    | -------------------------------------------------------------------
    |  Native Auto-load
    | -------------------------------------------------------------------
    | 
    | Nothing to do with cnfig/autoload.php, this allows PHP autoload to work
    | for base controllers and some third-party libraries.
    |
    */
    function __autoload($class)
    {
        if(strpos($class, 'CI_') !== 0)
        {
            @include_once( APPPATH . 'core/'. $class . EXT );
        }
    }
    

    CI 2.0を使用しているため、MY_ControllersをライブラリではなくApplication/CORE内に配置する必要があります。

    私のアプリケーション/コアは少し似ています:

    Admin_Controller.php
    MY_Controller.php
    Public_Controller.php
    


    1. JDBCとSpringの操作

    2. トランザクション内(SQL Server内)で複数のDDLステートメントを実行することは可能ですか?

    3. PgBouncer 1.7 –「復活後に色が変わる」

    4. mysql 8の結果の行セットの場合の変更点は何ですか?