我正在使用FOSUserBundle并在我的数据库中成功创建用户。但是,我尝试通过Symfony security漫游来尝试登录用户并且只有ROLE_ADMIN
个用户访问/admin
。
然而,即使没有考虑过记录用户,当我尝试访问localhost/app_dev.php/admin
时,我能够以" Anon"用户。下面是我的security.yml和控制器文件:
应用程序/配置/ 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 /控制器/ 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!!'
));
}
}
答案 0 :(得分:1)
我不熟悉FOSUserBundle但是access_control
条目用于路径/admin/
- 请注意尾部斜杠,而您的示例localhost/app_dev.php/admin
则不然。如果您从access_control
条目中删除该条目或更改路线,则应该按预期工作。
E.g。
access_control:
- { path: ^/admin, role: ROLE_ADMIN }