5

CSRFトークンの有効期限が切れたときのCIのデフォルトの動作が気に入らない。たとえば、ユーザーがログインフォームを長時間表示し、最終的に送信すると、エラーメッセージが表示されたこの醜い空白のページが表示されます。

これを回避する方法を尋ねたところ、誰かがSecurityクラスを拡張し、そのcsrf_show_error()メソッドを次のようにオーバーライドするように指示しました。

class MY_Security extends CI_Security {


    public function __construct()
    {
        parent::__construct();

    }

    public function csrf_show_error()
    {
        // comment out the default action
        // show_error('The action you have requested is not allowed.');

        // add redirect actions here
        // I'd like to use some helper function here like redirect()

    }

} 

問題は、リダイレクトを実行するために、ここからライブラリとヘルパーにアクセスする方法がわからない、またはわからないことです。エラーが発生したため、ここではget_instance()関数を使用できません。それで、私は他に何をしますか?または、このエラーページが表示されないようにするための他のより良いオプションはありますか?

4

3 に答える 3

3

のようなコアクラスCI_Securityは、ヘルパーやライブラリの前にインスタンス化されます。CIアプリの他の場所のように、これらの関数を利用することはできません。

header()よりきれいなエラーページにリダイレクトしたいだけの場合は、ネイティブPHP関数を使用してクラスの機能を複製する必要がありますが、これはそれほど難しいことではありません。

于 2013-01-21T22:37:56.280 に答える
3

Securityその方法の1つは、クラスを拡張して同じページにリダイレクトすることです。

CodeIgniterユーザーガイド-コアクラスの拡張

ページを開いたままにした後に期限切れのCSRFトークンを処理する方法の良い説明

于 2016-05-17T15:22:43.087 に答える
2

ページビューを変更したい場合は、でファイルを編集できerror_general.phpます/application/errors/error_general.php。CodeIgniterはそのファイルを使用して、CSRFエラーなどの一般的なエラーを表示します。

よろしく:)。

于 2014-03-27T18:03:23.093 に答える