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 回答