PHP用户认证库/框架...有哪些选择?

8

我正在使用PHP和CodeIgniter框架开发一个项目,需要一个用户登录/认证系统。

目前,我不想使用SSL(可能过于复杂,并且我使用的是共享主机,这会让我望而却步)。我考虑过使用OpenID,但决定不这样做,因为我的目标受众通常不具备技术背景,这可能会吓到用户(更不用说它需要镜像登录信息等等)。我知道我可以编写基于哈希的身份验证(例如SHA1),因为没有传递敏感数据(我将其敏感度与StackOverflow相当)。

话虽如此,在制定自定义解决方案之前,了解是否有任何好的库或包会提供半安全的身份验证将是很好的。我对CodeIgniter还很陌生,但最好能够与之集成良好的东西。有什么建议吗?(欢迎对我的方法进行批评,并提出建议,以说明为什么不使用ssl可能是疯狂的)。谢谢!

更新:我已经研究了一些建议。我很想尝试Zend-Auth,因为它似乎得到了很好的支持和构建。有人在CodeIgniter中使用zend-auth有经验吗(它是否太笨重?)并且您有一个良好的参考资料来将其与CI集成吗?我不需要任何复杂的身份验证方案..只需要一个简单的登录/注销/密码管理授权系统。

此外,dx_auth也很有趣,但我担心它太容易出错了。其他人使用它取得了成功吗?

我意识到我还想以类似于StackOverflow的方式管理访客用户(即未登录/注册的用户),因此任何具有此功能的建议都将是极好的。


检查答案:https://dev59.com/PkjSa4cB1Zd3GeqPEly5#1116855 - Bassel Safadi
还有PEAR的auth组件。 - kguest
你可能想要查看 https://github.com/delight-im/PHP-Auth 这个项目,它既不依赖于任何框架,也不依赖于任何数据库。 - caw
3个回答

4

我使用Zend_Auth进行身份验证。但总体上我使用Zend Framework。据我所知,它与CI集成得很好。对于Zend_Auth,我使用Db_Table适配器和带有全局盐的SHA1。我认为这已经足够满足许多目的。


几年后的经验告诉我,CodeIgniter已经过时了。现在我用ZF来做所有的事情,并且需要学习Doctrine。 - Stephen Fuhry

2
我发现在Codeigniter中dx_auth非常好用,之前也使用过。它无疑是Codeigniter最全面的身份验证库。
我需要进行一些更改,所以我扩展了他们的User类,并添加了一些函数来满足我的需求(其中一些函数可能不完全符合您的期望..)。以下是我所做的自定义部分的一部分:
     $CI = &get_instance();
     $CI->load->model("dx_auth/users");
     /**
     * For most things, try and use the dx_auth models, 
     * because it's already done, and some stuff is more 
     * annoying to figure out than might be expected.
     *
     * For anything site-specific, use this model instead.
     *
     */

     class UserModel extends Users {
        /**
        * Sometimes when dx_auth sucks, you have to compensate 
        * functions that return useful results.
        *
        * @param int $id id of user to check if banned
        * @return int $banned returns the result (0 or 1)
        */
       public function is_banned($id) {
            $query = "SELECT banned FROM users WHERE id=".(int)$id;
            $result=$this->db->query($query);
            $row = $result->row_array();
            return $row['banned'];
       }


    }

我也在许多项目中使用过它,并且取得了成功。它很简单,几乎可以满足你的所有需求。 - ryeguy

2
看起来这个可能正是你所需要的,如果你想在codeigniter中使用zend-auth。如果你发现zend-auth和codeigniter很搭配,请再次更新你的问题。我个人发现hack dx_auth相当痛苦,特别是因为它缺乏文档,如果有其他可行的方案,我很愿意尝试一下。

谢谢,我可能会尝试一下。 - oym

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接