2013-07-04 6 views
1

Symfony2를 배우고 있습니다.
위대한 책과 요리 책을 사용했지만 어디서나 내 질문에 대한 답을 찾을 수 없습니다.
타사 로그인 API를 사용하고 있지만 응답 속도가 약간 느리기 때문에 빠른 응답 시간을 위해 알려진 사용자를 내 DB에 저장하고 싶습니다.
entity provider으로 데이터베이스를 직접 만들었습니다.
이제 로그인이 실패하면 Symfony가 내 다른 서비스와 로그인을 시도하고 싶습니다.Symfony2의 다른 서비스에서 다시 로그인하지 못했습니다.

여기가 새로운 코드를 삽입하는 것이 논리적 인 부분입니다.

public function loadUserByUsername($username) { 

    $q = $this 
      ->createQueryBuilder('u') 
      ->where('u.username = :username') 
      ->setParameter('username', $username) 
      ->getQuery(); 

    try { 
     $user = $q->getSingleResult(); 
    } catch (NoResultException $e) { 

     // Try login to other service before failing 
     $login = $APIHelper->login($username, $password); 

     if ($login) { 
      // Make sure the user is persisted to database 
      ... 
      // Return the user 
      return $login->getUser(); 
     } 
     else { 
      $message = sprintf(
       'Unable to find user SHSnaphackBundle:User object identified by "%s".', $username 
      ); 
      throw new UsernameNotFoundException($message, 0, $e); 
     } 
    } 

    return $user; 
} 

나는 완벽하게 작동하지만 암호를 얻는 방법을 찾을 수 없다고 생각합니다. 사용자가 로그인을 시도 했습니까?

그리고이 목적에 맞는 파일입니까?

답변

0

보안 프레임 워크 (오른쪽 엔티티 공급자)가 암호 확인을 수행하기 때문에 엔터티 공급자만으로는 적합하지 않습니다. 고급 보안 기능을 사용하려면 보안 시스템 내부의 내용 (특히 authentication 부분)을 이해해야합니다. 귀하의 경우에 귀하의 질문에 게시 된 write an authentication provider해야합니다.

관련 문제