2017-05-29 13 views
0

私はカスタムUserProviderを持っていて、refreshUserメソッドでは、ユーザーをログアウトするために文字列anon.を返しています。しかし、という例外がスローされます。これは、行164のContextListener.phpにある文字列のgetusernameにアクセスしているためです。エラー:非オブジェクト上のメンバー関数getUsername()を呼び出す

public function refreshUser(UserInterface $user) 
{ 
    if (!$user instanceof User) { 
     throw new UnsupportedUserException(sprintf(
      'Instances of "%s" are not supported.', 
      get_class($user) 
     )); 
    } 

    if ($this->request && !$this->request->cookies->has('lsm_token')) 
    { 
     $this->tokenStorage->setToken(null); 
     $this->request->getSession()->invalidate(); 
     return 'anon.'; 
    } 

    return $user; 
} 

ユーザーをログアウトする方法はありますか?この例外がスローされないようにするにはどうすればよいですか?

答えて

2

文字列を返さないでください。このメソッドは、UserInterfaceのインスタンスのみを返すか、例外をスローする必要があります。

プロバイダーにこのようなユーザーがいない場合は、UsernameNotFoundExceptionを送信する必要があります。

Symfonyのドキュメントの例をご覧ください:How to Create a custom User Provider

関連する問題