提问人:Pekka 提问时间:12/29/2009 最后编辑:Pekka 更新时间:7/12/2013 访问量:4474
PHP的基本身份验证和会话管理库?
Basic authentication and session management library for PHP?
问:
我知道这样的问题已经被问过很多次了,但不是这个。如果我忽略了一个明显的重复项,请原谅我。
我的许多 Web 应用程序的核心是一个自编写的用户/会话管理类,其起源可以追溯到 2002 年。 我已经决定是时候从根本上重写了,或者最好是引入一个现成的标准库。
我对该库的要求是:
- 面向对象,干净,优秀的代码
- 完整会话管理:session_start() 和 consorts 的包装器
- 理想情况下,将提供各种存储方法(PHP标准/tmp,基于数据库)
- 理想情况下,能够连接到不同类型的用户数据存储,但 mySQL 会做得很好
- 理想情况下,它将为支持 OpenID 提供方便的功能,但这是一个奇特的想法,现在没有要求
- 方法:验证会话、获取用户数据、获取会话数据、登录用户、注销用户
- 设置:会话生存期、密码加密
- 必须是开源的
如果它非常通用,那么用户管理 API 或用于周围应用程序用户管理的通用连接器会很好:
- 创建/更新/删除用户记录
- 获取和修改当前登录用户的数据
这太基本了,而且与安全相关,我希望有一个标准的解决方案,但是我不知道任何解决方案,而且所有大型CMS和博客似乎都在推出自己的解决方案。
我的两个问题:
您知道通用的独立库这样的组件吗?
对 Zend Framework 有深入了解的人能否告诉我是否可以将 Zend_auth 和/或独立Zend_session用于与 ZF 无关的大型应用程序的核心,而不会遇到麻烦?
答:
有几个可用的 OpenID 库。
http://wiki.openid.net/Libraries#php
对于其余的,你不妨自己滚动,因为弄清楚别人的库可能会比它的价值更麻烦。
评论
对 Zend Framework 有深入了解的人能否告诉我是否可以将 Zend_auth 和/或Zend_session独立使用,作为与 ZF 无关的大型应用程序的核心,而不会遇到麻烦?
我对 Zend 框架没有很深的了解,但我使用过各种组件(例如 Zend_Search),而无需创建Zend_Application对象或使用 MVC 框架,我相信库的其余部分也被设计为完全模块化的。上次我挖了Zend_Session代码,我没有在外面找到任何包含。快速的谷歌似乎证实了这一点,Zend_Auth,以及 Zend FAQ,其中指出:Zend/Session/
采埃孚是组件库还是框架?
简单的答案:两者兼而有之。Zend Framework 在单个发行版中提供了大多数 Web 应用程序所需的所有组件。但是 Zend Framework 组件也是松散耦合的,因此可以在 Web 应用程序中轻松使用几个组件,甚至可以与其他框架一起使用!使用这种随意使用的架构,我们正在实现在更单一的框架中常见的功能。事实上,我们目前正在为 1.8 版本开发一个工具组件,该组件将使使用 ZF 组件构建应用程序变得更加简单,但不会牺牲现有 ZF 组件的随意使用特性。这证明了 Zend Framework 的随意使用架构,即工具组件本身可以独立使用。
当不将 Zend_Search 与 MVC 框架一起使用时,我唯一要做的就是将安装 Zend Framework 的目录添加到包含路径中,因为 Zend 库中有包含。该文档没有记录不使用 Zend Autoloader 时所需的包含内容,但由于所有内容都使用 PEAR 类命名方案,因此很容易从您正在使用的类名中推断出来。(所以这个班级会要求你包括Foo_Bar_File
Foo/Bar/File.php
)
评论
我的理解是,没有标准库,因为没有关于用户是什么的标准定义。
在我的一些应用程序中,用户只需登录即可执行操作。在其他情况下,用户是公司的一部分,他们的权限和数据访问受到该公司的限制和公司支付的订阅级别的限制。在其他应用程序中,有些用户是有权访问所有内容的管理员,有些用户是有权访问某些数据(行级别)的管理员,而其他用户是这些管理员的客户端,只能访问自己的数据。有些用户与公司/公司/客户绑定,有些用户则不然。有些用户只是一个用户名和密码,有些则是一个包含客户端、订单历史记录、报告偏好、评论等的大型对象图。
也许我错了,有一些干净的方法可以将所有这些需求抽象到一个系统中,该系统不需要五层子类和一千次数据库点击来登录某人。不过我还没有找到它。
评论
我可以建议我编写的身份验证库吗?它是一个通用库(不是为框架编写的,也不是框架的一部分):http://ulogin.sourceforge.net
评论