我有一个路由,它有一个参数,并且我的防火墙认为它需要首先登录。我尝试设置模式以使用路由中使用的名称格式,但它仍然说它需要身份验证。
是否有一种特殊的方法可以让模式与参数一起使用?我没有看到如何做到这一点。
由于
$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);
})
]);
答案 0 :(得分:2)
这可能是正则表达式问题。我可以将参数传递给^/recover
路线就好了。
$app->get('/recover/{id}', function (Request $request, $id) use ($app) {
error_log(print_r((int) $id,1).' '.__FILE__.' '.__LINE__,0);
});
但是,如果我将$
添加到^/recover$
之类的路线,那么它会重定向到登录,因为美元符号表示字符串结束。