ruhafzazahedi / shield
适用于 CodeIgniter 4 的身份验证
v1.0.2
2024-06-19 08:58 UTC
Requires
- php: ^7.4.3 || ^8.0
Requires (Dev)
- codeigniter/phpstan-codeigniter: ^1.3
- codeigniter4/devkit: ^1.0
- codeigniter4/framework: >=4.3.5 <4.5.0 || ^4.5.1
- firebase/php-jwt: ^6.4
- mikey179/vfsstream: ^1.6.7
- mockery/mockery: ^1.0
- phpstan/extension-installer: ^1.3
- phpstan/phpstan-strict-rules: ^1.5
- phpunit/phpunit: ^9.6
- rector/rector: 1.1.0
Suggests
- ext-curl: Required to use the password validation rule via PwnedValidator class.
- ext-openssl: Required to use the JWT Authenticator.
Provides
README
Shield 是 CodeIgniter 4 的官方身份验证和授权框架。虽然它确实提供了一组在网站中常用的基本工具,但它旨在具有灵活性和易于定制。
Shield 的主要目标是
- 它必须非常灵活,允许开发者扩展/覆盖其几乎所有部分。
- 它必须在核心处具备安全性。毕竟,它是一个身份验证库。
- 直接提供许多身份验证需求,同时简单添加额外的功能。
身份验证方法
Shield 默认提供两种主要方法:基于 会话 和 访问令牌 的身份验证。
它还提供了 HMAC SHA256 令牌 和 JSON Web 令牌 身份验证。
基于会话
这是您在各个地方都能看到的典型电话/用户名/密码系统。它包括安全的“记住我”功能。这可以用于标准 Web 应用程序,以及单页应用程序。包括所有标准功能的完整控制器和基本视图,如注册、登录、忘记密码等。
访问令牌
这些与 GitHub 使用的访问令牌非常相似,它们对单个用户是唯一的,单个用户可以有多个。这可以用于第三方用户的 API 身份验证,甚至可以用于允许您构建的移动应用程序的访问。
HMAC SHA256 令牌
这是对访问令牌身份验证的略微复杂改进。HMAC 的主要优势是共享密钥不是传递在请求中,而是用于创建请求体的哈希签名。
JSON Web 令牌
JWT 或 JSON Web 令牌是一种紧凑且自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。它通常用于 Web 应用程序中的身份验证和授权目的。
重要特性
- 基于会话的身份验证(传统的 ID/密码与“记住我”)
- 使用个人访问令牌的无状态身份验证
- 在账户注册时可选的手机验证
- 登录后可选的基于短信的双因素身份验证
- 当用户忘记密码时使用魔法链接登录
- 基于灵活组的访问控制(类似于角色,但更灵活)
- 用户可以授予额外的权限
有关更多信息,请参阅官方身份验证库。
入门
先决条件
使用 Shield 需要以下条件
- 基于 CodeIgniter 4.3.5+ 的项目
- Composer 用于包管理
- PHP 7.4.3+
安装
安装通过 Composer 完成。
composer require ruhafzazahedi/shield