2017-11-13 12 views
0

symfony 3 앱에서 사용자를 삭제하려고합니다. 나는 FOSOAuthBundleFOSUserBundle을 사용합니다. FOSOAuthBundle을 사용하는 사용자를 삭제할 수 없습니다.

나는이 코드를 시도 :

$em = $this->getDoctrine()->getManager(); 
$em->remove($user); 
$em->flush(); 

을하지만이 오류 얻을 : 나는 액세스는 사용자 필드를 토큰을 얻는 경우에

# FOSOAuthServerBundle configuration 
fos_oauth_server: 
    db_driver: orm 
    client_class: OAuthBundle\Entity\Client 
    access_token_class: OAuthBundle\Entity\AccessToken 
    refresh_token_class: OAuthBundle\Entity\RefreshToken 
    auth_code_class: OAuthBundle\Entity\AuthCode 
    service: 
     user_provider: fos_user.user_provider.username_email 
     options: 
      access_token_lifetime: 86400 
      refresh_token_lifetime: 2.628e+6 

:이 구성이

An exception occurred while executing 'DELETE FROM user WHERE id = ?' with params [1]:\n\nSQLSTATE[23000]: 
Integrity constraint violation: 1451 Cannot delete or update a parent row: 
a foreign key constraint fails (`database`.`access_token`, CONSTRAINT `FK_B6A2DD68A76ED395` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`)) 

을 데이터베이스에 올바른 ID가 저장되고으로 로그인 할 수 있지만 항상 null입니다. 이 토큰.

답변

1

캐스케이드 작업을 구성해야합니다. 사용자를 삭제할 때 access_token 테이블에서 수행 할 작업을 결정해야합니다. 토큰을 삭제하거나 관련 사용자를 null로 설정할 수 있습니다.

More info here

+0

그래도 어디에서해야합니까? 사용자와 액세스 토큰 간에는 아무런 관련이 없습니다. 단순히 사용자의 액세스 토큰에 관계를 추가하고 계단식 작업을 정의 할 수 있습니까? – mgluesenkamp

+0

사용자 엔티티와 AccessToken 엔티티에 주석이 있어야합니다. 나머지는 FosOauthBundle에서 관리합니다. – Carlos