2013-06-12 2 views
0

하이브리드 인증 (Steam Community)을 구현하기 위해 Laravel 4를 사용하고 있습니다. 내 컨트롤러에서 로그인과 로그 아웃의 두 가지 방법을 만들었습니다.하이브리드 인증 : 로그 아웃

로그인 작업 및 증기의 정보를 표시한다 : 나는 다른 방법을 사용 로그 아웃 할 그러나

public function login() 
{ 

    $config = array( 
     "base_url" => "http://site.com/login/auth", 
     "providers" => array ( 
      "OpenID" => array (
        "enabled" => true 
      ), 
      "Steam" => array ( 
       "enabled" => true 
      ) 
     ) 
    ); 

    try { 
     $socialAuth = new Hybrid_Auth($config); 
     $provider = $socialAuth->authenticate("Steam"); 
     $userProfile = $provider->getUserProfile(); 
    } 
    catch(Exception $e) { 
     return "Error: " . $e; 
    } 

    echo "Connected with: <b>{$provider->id}</b><br />"; 
    echo "As: <b>{$userProfile->displayName}</b><br />"; 
    echo "<pre>" . print_r($userProfile, true) . "</pre><br />"; 
    echo "<img src=". $userProfile->photoURL . ">"; 

} 

지금, 나는 $provider->logout();를 부를 것이다 로그 아웃 할 수 있습니다. (?)

public function logout() 
{ 

    Hybrid_Auth()->authenticate('Steam')->logout(); 

} 

http://hybridauth.sourceforge.net/apidoc.html delaring 방법에 대한 문서와 같은 Hybrid_Auth::logoutAllProviders()는하지만 내가 할 수있는 :

그러나, 나는이 어떻게 작동하는지 이해할 수없는 것 ... 나는 같은 것을 시도 그것을 사용하는 방법을 찾지 못하는 것 같습니다!

도움이 될 것입니다.

감사합니다.

+0

질문에 대한 답변을 드려 죄송합니다. 그러나 Laravel의 hybridauth를 어떻게 다루었습니까? 여기에 설명 된대로 올바른 경로에서 스팀을로드하지 않는 것이 어떻습니까? http://stackoverflow.com/questions/18592642/laravel-4-composer-and-hybridauth-how-to-load-additional-providers – robjbrain

+0

안녕하세요, 귀하의 질문에 댓글을 달았습니다. – Alias

답변

2

당신은 당신의 logout 기능에 Hybrid_Auth 클래스를 인스턴스화 한 다음 logoutAllProviders 방법을 사용할 수 있습니다 그러나

(new Hybrid_Auth($config))->logoutAllProviders(); 

를, 난 당신이 생성자에 HybriadAuth의 인스턴스를 전달하는 것이 좋습니다 :

# YOUR CONTROLLER 
public function __construct(Hybrid_Auth $hybridAuth) 
{ 
    $this->hybridAuth = $hybridAuth; 
} 

public function logout() 
{ 
    $this->HybridAuth->logoutAllProviders(); 
} 

# ELSEWHERE IN THE APP (ROUTES FILE, FOR INSTANCE) 
App::bind('Hybrid_Auth', function() { 
    return new Hybrid_Auth(array(
      "base_url" => "http://site.com/login/auth", 
      "providers" => array (
       "OpenID" => array (
         "enabled" => true 
       ), 
       "Steam" => array (
        "enabled" => true 
       ) 
      ) 
     )); 
}); 

종속성 주입, 귀하의 컨트롤러도 testable해야합니다.

+0

감사합니다. 어떻게 증기 인증을 시작합니까? $ provider = $ this-> HybridAuth-> authenticate ("Steam"); 또는 뭔가? (작동하지 않지만 가까이 있다고 생각합니다 ...) – Alias

+0

아, "HybridAuth"보다는 "hybridAuth"입니다. 따라서 로그인을 관리했지만 로그인 기능을 호출 할 때 "Route pattern"/ login/{action}/{{action}} "변수 이름"동작을 두 번 이상 참조 할 수 없습니다. "라는 오류가 발생합니다. 전에 봤어? – Alias

+0

코드에서 : http://paste.laravel.com/x9l – Alias