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

Basic authentication and session management library for PHP?

提问人:Pekka 提问时间:12/29/2009 最后编辑:Pekka 更新时间:7/12/2013 访问量:4474

问:

我知道这样的问题已经被问过很多次了,但不是这个。如果我忽略了一个明显的重复项,请原谅我。

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

我对该库的要求是:

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

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

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

这太基本了,而且与安全相关,我希望有一个标准的解决方案,但是我不知道任何解决方案,而且所有大型CMS和博客似乎都在推出自己的解决方案。

我的两个问题:

  • 您知道通用的独立库这样的组件吗?

  • Zend Framework 有深入了解的人能否告诉我是否可以将 Zend_auth 和/或独立Zend_session用于与 ZF 无关的大型应用程序的核心,而不会遇到麻烦?

PHP 身份验证

评论

0赞 Hari K T 10/29/2014
github.com/auraphp/Aura.Auth .如果需要,您可以绕 github.com/auraphp/Aura.Session。可能是帮助别人。
1赞 caw 10/22/2016
您可能想看一下 github.com/delight-im/PHP-Auth 它既与框架无关,又与数据库无关。

答:

1赞 sakabako 12/29/2009 #1

有几个可用的 OpenID 库。

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

对于其余的,你不妨自己滚动,因为弄清楚别人的库可能会比它的价值更麻烦。

评论

0赞 Pekka 12/30/2009
感谢您的 openID 链接。再说我自己:一个有据可查的标准库应该可以很快弄清楚。我希望那里有一个。
2赞 Yacoby 12/30/2009 #2

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_FileFoo/Bar/File.php )

评论

0赞 Pekka 1/3/2010
谢谢你的回答Yacoby。我想我会深入研究它并尝试一下采埃孚。
0赞 Scott Saunders 12/30/2009 #3

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

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

也许我错了,有一些干净的方法可以将所有这些需求抽象到一个系统中,该系统不需要五层子类和一千次数据库点击来登录某人。不过我还没有找到它。

评论

0赞 Pekka 12/30/2009
我想你看错了我。我不是在谈论任何类型的访问控制管理。我只谈论基本事实:用户登录,用户注销。也许,用户更改了他们的密码。没有别的了。当然,我可能是错的,但根据我的经验,这是非常低级的,应该几乎是标准化的。
0赞 Scott Saunders 12/30/2009
我想我还是不明白。如果用户登录不能为您提供访问控制权,那么登录又有什么意义呢?这不就是“登录”的意思吗?
0赞 Pekka 1/3/2010
我只需要一个通用的 API,从本质上讲,它告诉我登录用户是谁(即他或她使用哪些凭据登录)。其余的(= 访问控制、检查他们是否被允许执行请求的操作等)将取决于 Web 应用程序。API 只知道 ID 为 123 的用户已登录到系统。它可以对这个用户做一些事情(登录、注销......),但不能做其他事情。
6赞 ultimA 8/23/2011 #4

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