使用 CodeIgniter 进行用户身份验证

Posted

技术标签:

【中文标题】使用 CodeIgniter 进行用户身份验证【英文标题】:User authentication with CodeIgniter 【发布时间】:2010-10-02 05:34:03 【问题描述】:

我正在使用 php 编写一个 Web 应用程序。我想为此使用 MVC 模式,并决定使用CodeIgniter。我的应用程序将有一些页面需要身份验证,而有些页面则不需要。我想以一种非常通用的方式设计它,这样就不应该有代码重复。任何人都可以为此指出一些好的“设计/类结构”吗?

【问题讨论】:

您可能想看看github.com/delight-im/PHP-Auth,它既与框架无关,也与数据库无关。 【参考方案1】:

编写一个自定义库,您可以在每次页面浏览时自动加载到您的代码点火器应用程序中。它应该具有以下功能:

对用户进行身份验证,即。检查用户是否登录 登录即。设置会话变量或其他东西 让你退出

然后在您的控制器类中,您可以调用构造函数中的身份验证函数,然后根据结果继续正常或将它们重定向到带有拒绝访问消息的登录屏幕。

在 code igniter wiki 上搜索“身份验证”,有许多结果可能会有所帮助:http://codeigniter.com/wiki/

【讨论】:

我一直将登录/注销功能(以及其他一些功能)放入“auth”控制器中。在任何单独的控制器中,我可以通过查看是否设置了 $this->session->userdata('uid') 来检查用户是否已登录。这是不好的做法吗? 我同意,创建自己的身份验证真的很容易。【参考方案2】:

“Ion Auth”精简、编程良好、使用广泛且得到积极维护。

http://github.com/benedmunds/CodeIgniter-Ion-Auth

【讨论】:

【参考方案3】:

如果“某些页面”是指某些控制器(您的视图的网关),那么您可能需要研究控制器继承。使用您自己的扩展默认 CodeIgniter 控制器并在构造函数中进行身份验证检查(检查会话以获取已登录标志或其他内容,如果未登录则重定向到登录页面)。然后,所有需要身份验证的控制器都需要扩展您的新父控制器。就是这样。

前往 CodeIgniter 论坛并搜索一些不同的方法来扩展控制器。这是一个http://codeigniter.com/forums/viewthread/89768/#452890

【讨论】:

【参考方案4】:

也许您可以将 CL_AUTH 库用于 CI。我用过它,效果很好。你可以在这里找到它http://www.jasonashdown.co.uk/cl_auth_doc/

【讨论】:

【参考方案5】:

我最近也在研究同样的事情,我发现了一个名为 Kohana 的 CodeIgniter 分支,其中包含一个不错的 authentication module。如果您设置在 CI 上,也许将 Kohana 的身份验证模块向后调整为 CI 会节省您一些时间?如果您刚刚开始您的项目并且可以使用 PHP5,请考虑切换;它们是非常相似的框架。

【讨论】:

【参考方案6】:

访问 GitHub 并搜索 Codeigniter Auth 或 Authentication,或查看 CodeIgniter Wiki,您会发现许多具有不同功能的库。探索它们并选择您需要的库!但要小心,很多都是针对 CI 2 的,你必须 ucfirst the classes 才能与 CI 3 一起使用,否则它们根本不起作用。

【讨论】:

【参考方案7】:

使用flexi auth 流行的Ion Auth 库的修改版本。它更先进,开箱即用。

flexi auth 是一个免费的开源用户身份验证/登录库,用于 CodeIgniter 2.0+ 框架。

我知道为时已晚,但我希望其他人会觉得它有帮助。 干杯!

【讨论】:

flexi_auth 已于 7 年前更新,而 ion_auth 仍在积极开发中。我会推荐 ion_auth ;)

以上是关于使用 CodeIgniter 进行用户身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter - 用户身份验证/登录插件/类? [复制]

使用LDAP身份验证的Codeigniter应用程序

CodeIgniter-YouTube-API-Library 使用注册帐户进行身份验证

CodeIgniter 身份验证系统允许 3rd 方身份验证?

Codeigniter 3.x 身份验证库?

在 codeigniter 3.1.2 中,登录表单提交导致身份验证失败