Flexi-auth是否支持第三方登录?如果是的话该怎么办?

时间:2014-03-30 09:17:23

标签: codeigniter authentication login

我使用 Flexi-auth 库进行codeigniter进行用户身份验证, 一般登录工作正常。 Flexi-auth是否支持第三方(谷歌/雅虎)登录?如果是的话该怎么办?

1 个答案:

答案 0 :(得分:1)

我已经查看了一段时间的文档,无法找到实际完成此操作的官方方法。但是,通过查看代码,我发现用户实际上是通过调用名为set_login_sessions的函数登录的。但是,该函数对Flexi_auth_model类是私有的。

如果您完全确定不会引入任何漏洞,而您还没有采取其他方式,您可以按照以下方式定义自己的方法:

public function login_3rd($identity = FALSE) {
     // Check logins, activation, suspensions etc like `Flexi_auth_model::login`

     // Confirm the login with the OAuth service

     // Query the DB to get the user

     set_login_sessions($user, FALSE);
}

这大部分与login功能类似,但针对第三方身份验证进行了调整。

调用$logged_in_via_password时,将FALSE参数设置为set_login_sessions非常重要。 Web应用程序中存在一些敏感区域(例如取款或其他东西),这些区域应该要求用户在通过之前输入密码。这可以防止重新打开浏览器的朋友(或通过恶意手段获取会话的人)访问某些内容。 Flexi-auth提供is_logged_in_via_password,允许您检查此项。但如果我们不说实话,它就不会起作用。