FOSUserBundle 允许 'Anon' 用户访问 `/admin`
FOSUserBundle allowing 'Anon' user to access `/admin`
我正在使用 FOSUserBundle 并在我的数据库中成功创建了用户。但是,我正在尝试让用户登录,并且只有 ROLE_ADMIN
用户按照 Symfony security 演练访问 /admin
。
然而,即使没有弄清楚用户登录,当我尝试访问 localhost/app_dev.php/admin
时,我也能够以 "Anon" 用户身份访问它。下面是我的 security.yml 和控制器文件:
app/config/security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: security.csrf.token_manager
logout: true
anonymous: true
access_control:
- { path: ^/admin/, role: ROLE_ADMIN }
src/AppBundle/Controller/DefaultController.php
class DefaultController extends Controller
{
/**
* @Route("/admin", name="admin")
*/
public function AdminAction(Request $request)
{
return $this->render('default/admin.html.twig', array(
'title' => 'Welcome Admin!!'
));
}
}
我不熟悉 FOSUserBundle,但是您的 access_control
条目是针对路径 /admin/
- 请注意尾部斜线,而您的示例 localhost/app_dev.php/admin
则没有。如果您从 access_control
条目中删除它或更改路线,那么这应该会按预期工作。
例如
access_control:
- { path: ^/admin, role: ROLE_ADMIN }
我正在使用 FOSUserBundle 并在我的数据库中成功创建了用户。但是,我正在尝试让用户登录,并且只有 ROLE_ADMIN
用户按照 Symfony security 演练访问 /admin
。
然而,即使没有弄清楚用户登录,当我尝试访问 localhost/app_dev.php/admin
时,我也能够以 "Anon" 用户身份访问它。下面是我的 security.yml 和控制器文件:
app/config/security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: bcrypt
role_hierarchy:
ROLE_ADMIN: ROLE_USER
ROLE_SUPER_ADMIN: ROLE_ADMIN
providers:
fos_userbundle:
id: fos_user.user_provider.username
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: security.csrf.token_manager
logout: true
anonymous: true
access_control:
- { path: ^/admin/, role: ROLE_ADMIN }
src/AppBundle/Controller/DefaultController.php
class DefaultController extends Controller
{
/**
* @Route("/admin", name="admin")
*/
public function AdminAction(Request $request)
{
return $this->render('default/admin.html.twig', array(
'title' => 'Welcome Admin!!'
));
}
}
我不熟悉 FOSUserBundle,但是您的 access_control
条目是针对路径 /admin/
- 请注意尾部斜线,而您的示例 localhost/app_dev.php/admin
则没有。如果您从 access_control
条目中删除它或更改路线,那么这应该会按预期工作。
例如
access_control:
- { path: ^/admin, role: ROLE_ADMIN }