dcvn / otp-laravel
Laravel本地OTP认证层
v1.0.0
2019-02-03 18:31 UTC
Requires
- robthree/twofactorauth: ^1.6
This package is auto-updated.
Last update: 2024-09-29 05:48:35 UTC
README
这是一个为本地OTP认证而设计的Laravel层。
这是一个使Laravel中的OTP实现变得简单的尝试。
作为一个层,此包不能没有以下核心依赖项
- 包robthree/twofactorauth处理真正的OTP逻辑,并且
- 包含的phpqrcode版本用于生成真正的二维码。
作为一个本地包,otp-laravel默认不依赖于网络服务来生成二维码(感谢RobThree使用phpqrcode的离线示例)。
快速入门设置
遵循快速入门,使用此OTP包设置新的Laravel项目。
最重要的一部分是在LoginController中,将现有的use AuthenticatesUsers替换为use Dcvn\Otp\Http\Controllers\AuthenticatesUsers;
。
如果你觉得真的很懒,可以将这个quickstart.sh脚本复制到你的项目基础目录,然后运行它(风险自担)。
特性
假设使用快速入门方法,但你可以根据自己的喜好实现。
- 为
users
表添加一个otp_secret
列(迁移)。 - 在登录页面添加OTP输入,并在设置后验证它。
- 添加设置用户OTP的路由、控制器方法和视图。
- 默认情况下,你只能设置自己的用户。
- 许多设置可以通过配置和
.env
文件进行配置。 - 支持英文和荷兰语翻译。
- 在应用中使用
OneTimePassword
作为别名。
一次性密码示例
<?php $otp = OneTimePassword::configured(); if ($otp->verifyCode($user->otp_secret), $request->verification) { /* ... */ }
发布文件
你可能不需要这样做,但你可以通过这种方式将配置、语言或视图文件复制到你的项目中。
artisan vendor:publish --provider "Dcvn\Otp\Providers\OtpServiceProvider" --tag config
artisan vendor:publish --provider "Dcvn\Otp\Providers\OtpServiceProvider" --tag lang
artisan vendor:publish --provider "Dcvn\Otp\Providers\OtpServiceProvider" --tag views
要覆盖访问策略(例如,允许(仅)管理员用户进行设置),将以下内容复制到你的AuthServiceProvider
的boot()
方法中,然后修改它
<?php use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Support\Facades\Gate; // in boot(): Gate::define('otp.setup', function (Authenticatable $user, Authenticatable $model) { return $user->id == $model->id; });