混合验证:注销
问题描述:
我使用Laravel 4来实现混合验证(Steam社区)。我在我的Controller中做了两种方法,登录和注销。混合验证:注销
登录工作,并显示来自蒸汽的信息:
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()
但是我可以(?)似乎无法解决如何使用它!
任何帮助将膨胀!
谢谢。
答
您可以在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
)
)
));
});
有了依赖性注射,您的控制器也应该是可测试的。
很抱歉对您的问题发表评论,但既然您似乎已经掌握了它的工作方式,您如何处理Laravel中的hybridauth而不是按照此处所述从正确的路径加载Steam? http://*.com/questions/18592642/laravel-4-composer-and-hybridauth-how-to-load-additional-providers – robjbrain
嘿,为你评论这个问题。 – Alias