CodeIgniter 4 的身份验证和授权

v1.1.0 2024-06-13 08:54 UTC

README

Unit Tests Static Analysis PHP-CS-Fixer Rector Psalm Architecture Coverage Status

Shield 是 CodeIgniter 4 的官方身份验证和授权框架。虽然它提供了一组在网站中常用工具的基本工具集,但它设计得灵活,易于自定义。

Shield 的主要目标包括

  1. 必须非常灵活,并允许开发者扩展/覆盖其几乎任何部分。
  2. 它必须在核心处具备安全性。毕竟,它是一个身份验证库。
  3. 提供许多开箱即用的身份验证需求,但可以轻松添加额外的功能。

身份验证方法

Shield 提供两种主要方法:开箱即用的基于会话的身份验证和访问令牌身份验证。

它还提供了基于 HMAC SHA256 的令牌和 JSON Web Token 身份验证。

基于会话的

这是你在任何地方都能看到的典型电子邮件/用户名/密码系统。它包括安全的“记住我”功能。这可以用于标准 Web 应用程序,也可以用于单页应用程序。包括所有标准功能(如注册、登录、忘记密码等)的完整控制器和基本视图。

访问令牌

这些与 GitHub 使用的访问令牌非常相似,它们对单个用户是唯一的,单个用户可以有多个。这可以用于第三方用户的 API 身份验证,甚至可以用于允许你构建的移动应用程序访问。

HMAC SHA256 令牌

这是对访问令牌身份验证的略微复杂改进。HMAC 的主要优势是共享密钥不是传递在请求中,而是用于创建请求体的哈希签名。

JSON Web Token

JWT 或 JSON Web Token 是一种紧凑且自包含的方式,可以安全地在各方之间作为 JSON 对象传输信息。它通常用于 Web 应用程序中的身份验证和授权目的。

重要功能

  • 基于会话的身份验证(传统的 ID/密码和记住我功能)
  • 使用个人访问令牌的无状态身份验证
  • 账户注册时可选的电子邮件验证
  • 登录后可选的基于电子邮件的两因素身份验证
  • 用户忘记密码时使用魔法链接登录
  • 基于组的灵活访问控制(类似于角色,但更灵活)
  • 用户可以获得额外的权限

有关更多信息,请参阅 官方身份验证库

入门指南

先决条件

使用 Shield 需要以下条件

安装

安装通过 Composer 完成。

composer require codeigniter4/shield

有关安装和用法建议的更具体说明,请参阅 文档

贡献

Shield 接受并鼓励社区以任何形式做出贡献。无论你是否会编写代码、编写文档或帮助寻找错误,所有贡献都是受欢迎的。有关详细信息,请参阅 CONTRIBUTING.md 文件。

许可证

本项目采用MIT许可协议 - 有关详细信息,请参阅LICENSE文件。

致谢

每个开源项目都依赖于贡献者才能取得成功。以下用户以不同方式为Shield做出了贡献:

Contributors

contrib.rocks制作。

以下文章/网站对该库的安全性和最佳实践的形成起到了关键作用,不分先后顺序: