steevedroz / ci4-auth
Requires
- php: >=7.2
- codeigniter4/framework: ^4.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- phpunit/phpunit: ^9.0
README
当使用CodeIgniter 4时,您有时需要验证用户。这个库允许您非常容易地
- 如果用户的凭据符合您的模型要求,则登录用户
- 检查用户是否已登录
- 获取已登录的用户
- 获取已登录用户的属性
- 登出用户
它可以在控制器中使用,也可以在视图、模型中,甚至库或帮助程序中使用。
设置
要安装ci4-auth,只需在CodeIgniter 4根存储库中运行 composer require steevedroz/ci4-auth 即可。
为了正确使用它,请按照以下步骤操作
- 创建一个
UserModel(您可以命名为任何名称)并使其实现SteeveDroz\CiAuth\UserModelInterface。 - 添加一个具有签名
login(array $user): ?array的公共方法。该方法应接受一个包含凭据(如用户名和密码)的array,并返回相应的完整用户,或者如果凭据不匹配,则返回null。 - 可选地,在
app\Config\Services.php中创建一个名为auth的服务,按照官方网站上的说明进行。请注意,为了调用构造函数,您必须传递您的用户模型作为参数(见下文)。 - 如果使用解析器渲染视图,您可以创建一个插件,其中
'getUser' => 'SteeveDroz\CiAuth\Auth::getUserStatic'。如果使用此功能,则不再需要创建服务,因为getUserStatic使用auth服务。
使用方法
设置完成后,您可以通过 service('auth') 访问身份验证库,如果您设置了服务,或者通过调用 new \SteeveDroz\CiAuth\Auth(new UserModel()),UserModel 是您在模型中创建的。
如果您想保留原始用户并保持会话不变,而不是在每次页面上更新它,则将构造函数的第二个参数添加为 false。
一旦您有一个包含 Auth 实例的变量(或服务),您可以使用以下方法。
类参考
SteeveDroz\CiAuth\Auth
__construct($model, $refresh = true)
参数
- $model (SteeveDroz\CiAuth\UserModelInterface) 将检查凭据的模型
- $refresh (bool) 如果用户在每次页面上更新
创建身份验证库的实例。
login($user)
参数
- $user (array) 包含需要检查的凭据的用户
使用模型检查凭据。如果它们正确,则在会话中将 array 保存为 user 键。
返回类型
void
logout()
从会话中删除已登录的用户。
返回类型
void
isLoggedIn()
检查用户是否当前已登录。
返回
true 如果在会话中找到用户,否则 false。
返回类型
bool
getUser([$field])
参数
- $field (string) 想从会话中存储的用户获取的字段
如果没有提供参数,则获取会话中的用户并返回它。如果提供了参数,则只返回会话中用户的相应属性;例如,$auth->getUser('firstName') 返回 $user['firstName']。
返回
用户作为 array、其属性之一,或 null(如果没有任何匹配项)。
返回类型
mixed
getUserStatic([$field])
参数
- $field (数组) 一个数组,第一个元素是要从会话中检索的用户字段
如果没有提供参数,则获取会话中的用户并返回它。如果提供了参数,则仅返回会话中用户的相应属性;例如,Auth::getUserStatic(['firstName']) 返回 $user['firstName']。
此静态方法旨在与解析器插件一起使用。例如,如果按照上面的例子创建了 getUser 插件,它可以这样使用:{+getUser email+}。该插件通过传递所有关键字作为数组来调用该方法,因此参数类型为数组。
返回
用户作为 array、其属性之一,或 null(如果没有任何匹配项)。
返回类型
mixed