moeen-basra / laravel-passport-otp-grant
Laravel Passport 单次密码授权
v1.1.0
2022-01-15 17:55 UTC
Requires
- php: ^8.1
Requires (Dev)
- laravel/passport: ^10.3
README
这是一个为 Laravel Passport OTP 认证提供的简单易集成的包。
如何使用
以下是一些您需要遵循的步骤来使它工作。
- 使用 composer 安装此包
composer require moeen-basra/laravel-passport-otp-grant
- 在您的期望提供者模型上实现
MoeenBasra\OneTimePinGrant\Interfaces\OneTimePinGrantUserInterface
接口。
use Illuminate\Foundation\Auth\User as BaseUser; use MoeenBasra\OneTimePinGrant\Interfaces\OneTimePinGrantUserInterface; class User extends BaseUser implements OneTimePinGrantUserInterface { //... /** * {@inheritDoc} */ public function findAndValidateForPassportOtpGrant(string $mobile_number, string $code) { if (!OneTimePin::validate($mobile_number, $code)) { return null; } return static::firstOrCreate([ 'mobile_number' => $mobile_number ]); } }
- 这一步是可选的,在
config/app.php
中的 providers 数组下添加服务提供者。
'providers' => [ //... MoeenBasra\OneTimePinGrant\OneTimePinGrantServiceProvider::class, ]
就是这样,现在您可以使用与其他 passport 端点相同的参数调用 otp 登录。
curl --location --request POST 'https://api.example.com/oauth/token' \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --form 'username="mobile_number"' \ --form 'password="code"' \ --form 'grant_type="otp"' \ --form 'client_id="client_id"' \ --form 'client_secret="client_secret"' \ --form 'scope="*"'
更多
有关更多详细信息,请参阅Laravel Passport 的官方文档。
贡献
欢迎您,您可以创建pull request。您的任何贡献都将获得认可。
问题
如果您遇到任何问题,请随时在此处报告。