1

ルートフィルターを特定のURLに適用しようとしています。だから、私のファイルはパブリックディレクトリの下にあります:

/public/js/kcfinder/browse.php

私のフィルター:

Route::filter('admin', function ()
{

    if (!Sentry::check())
    {
        // if not logged in, redirect to login

        return Redirect::to_route('admin_login');
    }
    elseif (!Sentry::user()->has_access('is_admin'))
    {
        //logout
        Sentry::logout();
        // has no access
        return View::make('error.access_error');
    }

});

最後に私のパターン:

Route::filter('pattern: js/kcfinder/*', 'admin');

アクセスしようとすると

/public/js/kcfinder/browse.php

ルールは機能しません。

ファイルの内容全体を見ることができます。

アクセスしようとすると

/public/js/kcfinder/blahblah.php

フィルタはうまく機能します。名前を付けたファイルがないため

blahblah.php

ディレクトリの下。

どんな助けでも本当に素晴らしいでしょう!

4

2 に答える 2

1

これ.htaccessは、リクエストURIが既存のファイルと一致する場合は、リライトせずに、ファイルをそのまま表示/実行するようにファイルに指示されているためです。

したがって、2つのオプションがあります。

.htaccessファイルに必要なフィルターを作成して、特定のディレクトリ内のファイルが常に書き換えられてに送信されるようにすることができますindex.php

RewriteCond %{REQUEST_URI} ^/js/kcfinder
RewriteRule \.php$ index.php [L,QSA]

この条件とルールのセットは、ファイルとディレクトリをチェックする条件の上に配置する必要があります。

または、ファイルを手動でフェッチして実行する認証済みルートをLaravelで作成することもできます。(これを利用する必要があるため、これはお勧めしませんeval()。)

于 2013-03-26T05:36:44.640 に答える
1

私はckfinderをLaravels認証システムに統合しようとしてこの道を進んできましたが、最終的には手間がかかりすぎることがわかりました。おそらく可能ですが、私の解決策は単純なハックでした。Ckeditorウィジェットをレンダリングするときは、PHPで単純な古いセッション変数を設定してから、ckfinders認証チェックルーチンでセッション変数が存在するかどうかを確認します。

// When rendering widget
session_start();
$_SESSION['enable_ckeditor'] = true;

// In ckfinder somewhere
session_start();
return isset( $_SESSION['enable_ckeditor'] ) ?: $_SESSION['enable_ckeditor'];
于 2013-03-26T20:19:58.000 に答える