dcvn/otp-laravel

Laravel本地OTP认证层

v1.0.0 2019-02-03 18:31 UTC

This package is auto-updated.

Last update: 2024-09-29 05:48:35 UTC


README

这是一个为本地OTP认证而设计的Laravel层。

这是一个使Laravel中的OTP实现变得简单的尝试。

作为一个,此包不能没有以下核心依赖项

作为一个本地包,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

要覆盖访问策略(例如,允许(仅)管理员用户进行设置),将以下内容复制到你的AuthServiceProviderboot()方法中,然后修改它

<?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;
});