PHP的基本身份验证和会话管理库?

时间:2009-12-29 15:43:39

标签: php authentication

我知道这样的问题已被多次询问过,但不是这一次。如果我忽略了一个明显的副本,请原谅我。

我的许多Web应用程序的核心是一个自编的用户/会话管理类,其起源可追溯到2002年。 我已经决定是时候进行基本的重写了,或者最好是引入现成的标准库。

我对该图书馆的要求是:

  • 面向对象,干净,优秀的代码
  • 完整会话管理:包装到session_start()和consorts
  • 理想情况下会提供各种存储方法(PHP Standard / tmp,基于数据库)
  • 理想情况下能够连接到不同类型的用户数据存储,但mySQL可以正常运行
  • 理想情况下会提供方便的功能来支持OpenID,但这是一个奇特的想法,现在没有要求
  • 方法:验证会话,获取用户数据,获取会话数据,登录用户,注销用户
  • 设置:会话有效期,密码加密
  • 必须是开源

如果非常通用,那么用户管理API 是周围应用程序用户管理的通用连接器会很好:

  • 创建/更新/删除用户记录
  • 获取并修改当前登录用户的数据

这是如此基本,安全相关,我希望有一个标准的解决方案,但我不知道,所有大型CMS和博客似乎都在推动自己。

我的两个问题:

  • 您是否知道通用,独立库这样的组件?

  • Zend Framework 有深入了解的人能否告诉我是否可以在大型应用程序的核心使用Zend_auth和/或Zend_session 独立否则与ZF没有任何关系,没有遇到麻烦?

4 个答案:

答案 0 :(得分:6)

我可以建议我编写的身份验证库吗?它是一个通用库(不是为框架编写的,也不是框架的一部分):http://ulogin.sourceforge.net

答案 1 :(得分:2)

  

Zend Framework 有深入了解的人能告诉我是否可以单独使用Zend_auth和/或Zend_session,这是一个与ZF无关的大型应用程序的核心,没有遇到麻烦?

我对Zend Framework没有深入的了解,但我使用了各种组件(例如Zend_Search)而没有创建Zend_Application对象或使用MVC框架,我确信库的其余部分也设计为完全模块化。上次我通过Zend_Session代码挖掘时,我在Zend/Session/之外找不到任何包含。 quick google似乎为Zend_Auth证实了这一点,以及Zend常见问题解答说明:

  

ZF是组件库还是框架?
  简单回答:两者都有。 Zend Framework在单个发行版中提供了大多数Web应用程序所需的所有组件。 但Zend Framework组件也松散耦合,使得在Web应用程序中只使用一些组件也很容易 - 甚至与其他框架一起使用!使用这种随意使用的体系结构,我们正在实现常见的功能在更多的整体框架中。实际上,我们目前正在开发1.8版本的工具组件,这将使使用ZF组件构建应用程序变得更加简单,但不会牺牲现有ZF组件的使用性质。这是Zend Framework的随意使用架构的证明,工具组件本身可以单独使用。

当不使用Zend_Search和MVC框架时,我唯一需要做的就是将Zend Framework安装到的目录添加到包含Zend库中的include路径。文档没有记录不使用Zend Autoloader时所需的包含,但由于所有内容都使用PEAR类命名方案,因此很容易从您使用的类名中推断出来。 (因此,课程Foo_Bar_File会要求您加入Foo/Bar/File.php

答案 2 :(得分:1)

有几个OpenID库可用。

http://wiki.openid.net/Libraries#php

对于其余的你也可以自己动手,因为找出别人的图书馆可能会比它的价值更麻烦。

答案 3 :(得分:0)

我的理解是没有标准库,因为没有标准的用户定义。

在我的一些应用程序中,用户只需登录即可。在其他情况下,用户是公司的一部分,他们的权限和数据访问受到该公司的限制和公司支付的订阅级别的限制。在其他应用程序中,某些用户是管理员可以访问所有内容,某些用户是管理员可以访问某些数据(行级别),而其他用户是这些管理员的客户端,只能访问自己的数据。有些用户与公司/公司/客户联系在一起,而其他用户则没有。有些用户只是一个用户名和密码,其他用户是带有客户的大型对象图,订单历史记录,报告首选项,评论等。

也许我错了,并且有一些干净的方式将所有这些要求抽象到一个系统中,该系统不需要五层子类和一千个数据库命中来记录某人。我还没有找到它。 / p>