我使用 Flexi-auth 库进行codeigniter进行用户身份验证, 一般登录工作正常。 Flexi-auth是否支持第三方(谷歌/雅虎)登录?如果是的话该怎么办?
答案 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
,允许您检查此项。但如果我们不说实话,它就不会起作用。