防火墙模式与匿名请求登录参数

时间:2015-09-02 00:42:46

标签: silex symfony-security

我有一个路由,它有一个参数,并且我的防火墙认为它需要首先登录。我尝试设置模式以使用路由中使用的名称格式,但它仍然说它需要身份验证。

是否有一种特殊的方法可以让模式与参数一起使用?我没有看到如何做到这一点。

由于

$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);
})
]);

1 个答案:

答案 0 :(得分:2)

这可能是正则表达式问题。我可以将参数传递给^/recover路线就好了。

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

但是,如果我将$添加到^/recover$之类的路线,那么它会重定向到登录,因为美元符号表示字符串结束。