尽管我的用户在数据库中具有角色,但在 symfony2 中总是 403 拒绝访问
Always 403 denied acces in symfony 2 despite my user have the role in database
我总是 403 拒绝访问,
这是我的 security.yml
security:
role_hierarchy:
Livreur: Livreur
Producteur: Producteur
Admin: Admin
providers:
fos_userbundle:
id: fos_user.user_provider.username
encoders:
FOS\UserBundle\Model\UserInterface: sha512
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, role: Admin }
我想访问 {url}/app_dev.php/admin ,总是 403 !
我正在使用 mongodb 数据库,这是我在 mongo 中的文档:
db.User.find().pretty()
{
"_id" : ObjectId("54fef590a98a93842000002e"),
"username" : "admin",
"usernameCanonical" : "admin",
"email" : "admin@email.com",
"emailCanonical" : "admin@email.com",
"enabled" : true,
"salt" : "flxrknwannwow0swccwk000gw44kwgg",
"password" : "u8d6fIrwTGF/x2FYhJxootw8MU4PR3KvY5mUjwLn9ZPBxA1foi0ox/OVif
9HIipz/cTIdvghJNKsdXljCR6MVA==",
"locked" : false,
"expired" : false,
"roles" : {
"0" : "Admin"
},
"firstName" : "xxxx",
"lastName" : "xxx",
"numTel" : "xxxx",
"adresse" : "xxxxx",
"lastLogin" : ISODate("2015-03-10T14:22:38Z")
}
the return of $document->getRoles() is
["ADMIN","ROLE_USER"]
如果我对当前用户进行测试,我会得到:
$this->container->get('security.context')->isGranted('Admin')
or
$this->container->get('security.context')->isGranted('ADMIN')
它return总是假的
请帮忙
我认为所有角色名称都应以 ROLE_ - 前缀开头
您需要使用 ROLE_ADMIN。
我有类似的问题,但当我更改角色名称时 - 问题已解决。
我总是 403 拒绝访问, 这是我的 security.yml
security:
role_hierarchy:
Livreur: Livreur
Producteur: Producteur
Admin: Admin
providers:
fos_userbundle:
id: fos_user.user_provider.username
encoders:
FOS\UserBundle\Model\UserInterface: sha512
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
access_control:
- { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, role: Admin }
我想访问 {url}/app_dev.php/admin ,总是 403 !
我正在使用 mongodb 数据库,这是我在 mongo 中的文档:
db.User.find().pretty()
{
"_id" : ObjectId("54fef590a98a93842000002e"),
"username" : "admin",
"usernameCanonical" : "admin",
"email" : "admin@email.com",
"emailCanonical" : "admin@email.com",
"enabled" : true,
"salt" : "flxrknwannwow0swccwk000gw44kwgg",
"password" : "u8d6fIrwTGF/x2FYhJxootw8MU4PR3KvY5mUjwLn9ZPBxA1foi0ox/OVif
9HIipz/cTIdvghJNKsdXljCR6MVA==",
"locked" : false,
"expired" : false,
"roles" : {
"0" : "Admin"
},
"firstName" : "xxxx",
"lastName" : "xxx",
"numTel" : "xxxx",
"adresse" : "xxxxx",
"lastLogin" : ISODate("2015-03-10T14:22:38Z")
}
the return of $document->getRoles() is
["ADMIN","ROLE_USER"]
如果我对当前用户进行测试,我会得到:
$this->container->get('security.context')->isGranted('Admin')
or
$this->container->get('security.context')->isGranted('ADMIN')
它return总是假的
请帮忙
我认为所有角色名称都应以 ROLE_ - 前缀开头 您需要使用 ROLE_ADMIN。 我有类似的问题,但当我更改角色名称时 - 问题已解决。