CakePHP PSR7 中间件身份验证发布

CakePHP 团队最近一直在努力改进身份验证和授权系统。这样做的原因有几个,首先,这两个系统在历史上一直通过 AuthComponent 联系在一起。其次,该组件是一个庞大的类,与应用程序的控制器层紧密耦合 - 这可能会导致授权难以在其他层中重用。

CakePHP 3 已经采取了几项措施来确保框架能够跟上最新的标准。同时,对团队来说,确保框架能够向后兼容和提供平滑的迁移路径也非常重要。改进的 CakePHP 身份验证系统的一个关键要求是保留一些向后兼容性。

改进的实现

https://github.com/cakephp/authentication

为了完成针对 CakePHP 3 框架的基于 PSR7 兼容中间件的改进身份验证系统的发布,花费了数小时的投入。对于核心团队来说,他们决定这是身份验证应该发生的地方。

理想情况下,请求对象应该包含识别用户所需的所有信息。虽然通常情况下,最佳实践是在堆栈早期识别用户或代理。改进意味着身份验证已完全重构并移至新的命名空间,以及代码的文件夹结构被重组。但最大的变化是逻辑的更好分离。

新的实现将身份验证器和标识符分开。身份验证器在请求中查找凭据并将它们传递给一组标识符,这些标识符使用凭据根据各种来源识别身份。例如,您可以同时针对用户的表格和 LDAP 检查凭据。配置与以前几乎相同。最大的变化是您必须拆分身份验证器和标识符的配置。另一个重大变化是身份验证作为中间件连接到您的应用程序,而不是在控制器中。

新功能

除了保留现有的身份验证器:HTTP Digest、HTTP Basic 和 Form 之外,现在还有 Token 和 Session 身份验证器。Token 是一个高级实现,允许您从请求查询参数或 HTTP 标头中使用令牌。将其扩展以提供基于 JWT 的身份验证应该很容易。

当前状态和路线图

插件的当前状态是,虽然还没有准备好投入生产,但可以使用。”我们希望您,社区,能够为我们提供改进和添加的建议,并报告您发现的错误。虽然我们有良好的单元测试基础,但可能存在尚未考虑到的场景和用例。

插件的路线图是在 CakePHP 3.4 正式发布时发布 1.0.0。插件本身目前处于 alpha 阶段,并将根据您的反馈使其成为最终发布。长期计划是将插件集成到框架本身。

代码在哪里?如何安装它?

查看 插件的官方存储库 并通过 composer 像往常一样安装它。

composer require cakephp/authentication

请注意版本约束!在 CakePHP 3.4 发布之前,它将需要 3.next 分支!

composer:require cakephp/cakephp:"dev-3.next as 3.4"

项目的 readme.md 包含一些有关如何开始使用新实现的基本信息,并提供有关如何从 AuthComponent 迁移的信息。