onetechasia / cognito
使用 AWS Cognito 进行用户管理/登录/注册/忘记密码
v0.0.3
2023-04-27 06:57 UTC
Requires
- php: ^8.1
- aws/aws-sdk-php: ^3.268
- guzzlehttp/guzzle: ^7.5
Requires (Dev)
- phpunit/phpunit: >=9.0
This package is auto-updated.
Last update: 2024-09-27 09:57:53 UTC
README
您可以通过 composer 安装此包。
composer require onetechasia/cognito
接下来,您可以发布配置
php artisan vendor:publish --provider="Onetech\Cognito\Providers\CognitoServiceProvider"
配置
将配置添加到环境文件:.env
# AWS Cognito configurations AWS_ACCESS_KEY_ID="" AWS_SECRET_ACCESS_KEY="" AWS_COGNITO_CLIENT_ID="" AWS_COGNITO_CLIENT_SECRET="" AWS_COGNITO_USER_POOL_ID="" AWS_COGNITO_REGION="us-east-1" AWS_COGNITO_VERSION="latest"
最后但同样重要的是,您想更改身份验证驱动程序:config/auth.php
'guards' => [ 'cognito-token' => [ 'driver' => 'cognito-token', // This line is important for using AWS Cognito as API Driver 'provider' => 'users', ], ],
将中间件添加到身份验证:app/Http/Kernel.php
protected $routeMiddleware = [ 'onetech.cognito' => \Onetech\Cognito\Http\Middleware\CognitoAuthenticate::class, ];
用法
我们的包为您提供了这些特质,您只需将其添加到您的 Auth 控制器中即可运行我们的包。
- Onetech\Cognito\Auth\AuthenticatesUsers
- Onetech\Cognito\Auth\RegistersUsers
- Onetech\Cognito\Auth\RefreshToken
use Onetech\Cognito\Auth\RegistersUsers; use Onetech\Cognito\Auth\AuthenticatesUsers; use Onetech\Cognito\Auth\RefreshToken; class UserController { use CognitoAuthenticatesUsers, RegistersUsers, RefreshToken; }
在代码中使用。
- 注册到 cognito
负载:用户名 = 邮箱或自定义用户名,密码属于 cognito 政策,需要验证
{ "name": "Le Duy", "username": "duy@onetech.vn", "email": "duy@onetech.vn", "password": "123456", "any attributes": "add more if needed" }
//Registering user $bool = $this->createCognitoUser($request); //return boolean
- cognito 登录
负载:需要用户名和密码
{ "username": "duy@onetech.vn", "password": "password", "remember": true }
//Login user $check = $this->attemptLogin($request); //Response using AccessToken for call API //Response using RefreshToken to fetch new AccessToken //Response using IdToken to get user information
- 获取新令牌
负载:需要用户名和刷新令牌
{ "username": "duy@onetech.vn", "refresh_token": "refresh token" }
//Fetch new AccessToken and IdToken $response = $this->refreshCoginitoToken($request); //Same API login
- 设置用于重置密码的用户密码
负载:需要用户名和刷新令牌
{ "username": "duy@onetech.vn", "password": "password" }
$check = $this->setUserPassword($request);
- 更改用户密码
API 调用需要添加头信息。Authorization: Bearer AccessToken
负载:需要旧密码和新密码
{ "old_password": "old password", "new_password": "new password" }
$accessToken = Auth::guard('cognito-token')->getTokenForRequest(); $oldPassword = $request->old_password; $newPassword = $request->new_password; $check = $this->changeUserPassword($accessToken, $oldPassword, $newPassword);
- 获取用户信息
您可以使用 IdToken 解析用户信息或调用 API 获取信息
API 调用需要添加头信息。Authorization: Bearer AccessToken
$userInfo = Auth::guard('cognito-token')->user();
- 用户登出
API 调用需要添加头信息。Authorization: Bearer AccessToken
$accessToken = Auth::guard('cognito-token')->getTokenForRequest(); $check = $this->signOut($accessToken);