Я разрабатываю АНИ, и я не могу получить текущий пользователь, когда я попробовать BasicAuth:Symfony2 Получение текущего пользователя
FatalErrorException: Error: Call to a member function getUser() on a non-object
Ниже вы найдете security.yml часть, которые вызывают ошибка (я думаю, это так):
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
anonymous: true
stateless: true
http_basic:
realm: "REST Service Realm"
provider: fos_userbundle
access_control:
- { path: ^/users/me, role: IS_AUTHENTICATED_FULLY }
Я просто положил путь в access_control, который я тестировал. У меня еще несколько.
Я использую FOSRestBundle, а также FOSUserBundle (как вы можете видеть), и я не хотел ставить префикс, потому что это было бы излишним:
// Routing.yml
rest :
type : rest
resource : "routing_rest.yml"
Теперь часть, где происходит ошибка находится в UserController (расширение FOSUser one):
private function response($data, $status, $groups = array())
{
$currentUser = $this->container->get('security.context')->getToken()->getUser();
if (!$currentUser)
$groups = array("anon");
else
{
if ($currentUser->hasRole("ROLE_SUPER_ADMIN"))
array_push($groups, "admin");
else if ($currentUser->hasRole("ROLE_ADMIN"))
array_push($groups, "admin");
else if ($currentUser->hasRole("ROLE_USER"))
array_push($groups, "user");
}
return $this->view($data, $status)->setSerializationContext(SerializationContext::create()->setGroups($groups));
}
Любая идея, что не так?
euhm, где строка, вызывающая ошибку? было бы приятно увидеть фактическую причину ... – NDM
Извините, я обновил его. – Romain
вызов '$ this-> getUser();' непосредственно внутри этого контроллера - см. [Doc] (http://symfony.com/doc/current/book/security.html#retrieving-the-user-object) – chrisben