HybridAuth(Anvard) - 如何注销&以不同的用户身份登录?

时间:2014-06-19 01:45:24

标签: php oauth laravel-4 hybridauth

我正在使用Anvard,这是一个实现Hybridauth的Laravel软件包。我一直在阅读的所有问题都在询问是否自动记录 ,我需要相反的事情!

情景:

  • UserA使用LinkedIn登录
  • 点击退出以点击/anvard/logout路线
  • 用户被重定向到/login并带有“已注销”的Flash消息
  • 点击“使用LinkedIn登录”按钮
  • UserA自动进行身份验证,无需重新授权

UserB如何使用LinkedIn登录(使用相同的浏览器)?

UserA可以转到设置中的链接并取消授权应用,但这显然是不切实际的:)

我已尝试使用'anvard / logout'路线,并尝试将以下内容添加到我的/退出路线:

Route::get('/logout', function() {

    // this is drawn from anvard's logout function
    $hybridAuth = App::make('hybridauth');
    $hybridAuth->logoutAllProviders();

    // this not working either :(
    // if(Auth::check()) {
    //     Auth::user()->remember_token = NULL;
    // }

    Auth::logout();
    Session::flush();
    return Redirect::route('login')->with('success', 'You\'ve been Logged Out');
});

正如你所看到的......我只是尝试了一切:)

这是我在hybridauth找到的一个问题:Logout doesn't really logout #220


更新:

我错过了一个基本原则吗?是否只是一次只允许给定浏览器中的任何给定提供者授权一个用户,并允许其他用户登录,UserA必须访问他的提供者(LinkedIn)并注销? < / p>

stackapps处有一个有用的答案和有用的评论:

  

好的,如果使用了无效的访问令牌,API将返回一个   错误,然后由应用程序通过身份验证运行用户   进程再次。如果用户已经登录,应用程序会这样做   该应用仍然是授权的,auth流将无形地使用   cookie /本地存储/等,或以其他方式呈现OAuth对话框,   正确?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我认为这就像Facebook登录一样。如果我目前在我的电脑上通过Facebook登录然后通过您的应用程序登录,您的应用程序将建立我的Facebook帐户和您网站帐户之间的连接。

如果我退出,只会破坏您网站上的会话,并且我会从您的网站退出。这对我在facebook上的登录状态没有影响。如果我现在访问Facebook网站,我仍然会通过我的Facebook帐户登录。因此,如果我再次访问您的网站并通过Facebook登录,我将使用我的相关帐户登录。

因此,如果另一个人想登录,我首先要去facebook并注销。另一个人必须登录FB,然后可以使用他的Facebook凭据登录您的网站。

这是你的意思吗?