0

パラメータを持つルートがあり、最初にログインする必要があると考えてファイアウォールをトリップさせます。ルートで使用されている名前フォームを使用するようにパターンを設定しようとしましたが、それでも認証が必要だと言っています。

パターンをパラメータで動作させる特別な方法はありますか? その方法がわかりません。

ありがとう

$app->register(new Silex\Provider\SecurityServiceProvider(), [
'security.firewalls' => [
    'login' => [
        'pattern' => '^/login$',
        'anonymous' => true
    ],
    'pwdRecovery' => [
        'pattern' => '^/recover',
        'anonymous' => true
    ],
    'newPassword' => [
        'pattern' => '^/newpassword$',
        'anonymous' => true
    ],
    // Any other URL requires auth.
    'authenticated' => [
        'pattern' => '^.*$',
        'form' => [
            'login_path' => '/login',
            'check_path' => '/authenticate'
        ],
        'anonymous' => false,
        'logout'    => ['logout_path' => '/logout'],
        'users' => $app->share(function() use ($app) {
            return new App\Providers\UserServiceProvider();
        }),
    ]
],
'security.access_rules' => [
    ['^/admin', 'ROLE_ADMIN']
],
'security.encoder.digest' => $app->share(function() {
    return new BCryptPasswordEncoder(15);
})
]);
4

1 に答える 1

2

これは正規表現の問題である可能性があります。パラメータを^/recoverルートに渡すことができます。

$app->get('/recover/{id}', function (Request $request, $id) use ($app) {
    error_log(print_r((int) $id,1).' '.__FILE__.' '.__LINE__,0);
});

$しかし、そのルートに追加すると^/recover$、ドル記号が文字列の終わりを示すため、ログインにリダイレクトされます。

于 2015-09-02T23:55:22.830 に答える