Гибридная аутентификация: выход

Я использую Laravel 4 для реализации Hybrid Auth (Steam Community). Я сделал два метода в моем контроллере, войти и выйти.

Логин работает, и отображает информацию из Steam:

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 методам разделения (?), Таким как Hybrid_Auth::logoutAllProviders() Но я не могу понять, как его использовать!

Любая помощь будет отличной!

Благодарю.

1 ответ

Решение

Вы можете создать экземпляр Hybrid_Auth класс в вашем logout функция, а затем использовать 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
                )
            )
        ));
});

С внедрением зависимостей ваш контроллер также должен быть тестируемым.

Другие вопросы по тегам