我開發一個API,當我嘗試,則基本我不能讓當前的用戶: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"
現在在錯誤發生的部分在用戶控制器(擴展FOSUser之一):
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 2014-10-16 15:30:37
對不起,我更新了它。 – Romain 2014-10-16 16:37:06
直接在此控制器中調用'$ this-> getUser();'請參閱[doc](http://symfony.com/doc/current/book/security.html#retrieving-the-user-object) – chrisben 2014-10-16 20:27:11