tech-ed / simpl-otp
一个简单且轻量级的Laravel包,用于生成和验证一次性密码(OTPs),增强Laravel应用程序的认证安全性。
Requires
- php: ^8.2
- laravel/framework: ^11.0
README
SimplOtp是一个简化Laravel应用程序中一次性密码(OTPs)生成和验证的Laravel包。此包受ichtrojan/laravel-otp的启发,但进行了修改,以使其更具灵活性,并包括Blade前端框架。
安装
您可以通过Composer安装SimplOtp包
composer require tech-ed/simpl-otp
安装包后,运行迁移命令以创建必要的数据库表
php artisan migrate
包将自动注册其服务提供者和外观。
配置
要自定义SimplOtp的行为,您可以使用以下Artisan命令发布其配置文件
php artisan vendor:publish --provider="TechEd\SimplOtp\SimplOtpServiceProvider" --tag="config"
此命令将配置文件config/simplotp.php
复制到您的应用程序的config
目录,您可以根据需要修改它。
配置选项
- 成功消息:自定义OTP生成和验证的成功消息。
- 错误消息:自定义各种失败场景的错误消息。
- OTP设置:配置OTP长度、类型(数字或字母数字)以及有效期限(分钟)。
return [ 'success_messages' => [ 'otp_generated' => 'OTP generated', 'otp_valid' => 'OTP is valid', ], 'error_messages' => [ 'invalid_type' => 'Invalid OTP type', 'expired_otp' => 'OTP Expired', 'invalid_otp' => 'Invalid OTP', 'otp_not_found' => 'OTP not found', ], 'otp' => [ 'length' => 4, 'type' => 'numeric', 'validity' => 15, ] ];
用法
后端
生成OTP
您可以使用SimplOtp::generate()
方法生成OTP。它需要一个与OTP关联的标识符。
use TechEd\SimplOtp\SimplOtp; $identifier = 'awesome@user.com'; $otp = SimplOtp::generate($identifier);
验证OTP
要验证OTP,请使用SimplOtp::validate()
方法,传递标识符和OTP令牌。
$identifier = 'awesome@user.com'; $token = '1234'; // OTP token to validate $result = SimplOtp::validate($identifier, $token);
前端框架
此包包括OTP生成和验证的Blade视图。
- 发布前端文件
php artisan simplotp:publish-frontend
-
包自动注册必要的路由。您可以在以下位置访问OTP生成和验证表单:
- 生成OTP:
/simplotp/generate
- 验证OTP:
/simplotp/verify
- 生成OTP:
-
视图是自包含的,并包括基本的Bootstrap样式。如果您想自定义视图,您可以在
resources/views/vendor/simplotp/
中找到它们。 -
要使用视图在自己的控制器或路由中,您可以使用
return view('simplotp::generate'); return view('simplotp::verify');
- 如果您想将视图集成到现有的布局中,您可以修改已发布的视图。例如,如果您有一个名为
app.blade.php
的布局文件,您可以更新视图以扩展此布局
@extends('layouts.app') @section('content') // The existing view content goes here @endsection
请记住调整内容部分名称(@section('content')
)以匹配布局的内容区域。
- 视图使用Bootstrap进行样式设计。如果您未在应用程序中使用Bootstrap,您可以删除Bootstrap链接并添加自己的CSS样式。
自定义
您可以通过编辑配置文件config/simplotp.php
来自定义成功和错误消息。此外,您可以调整OTP设置以满足应用程序的需求。
生成电子邮件通知
要创建通知文件夹内的基本电子邮件模板,请运行以下Artisan命令
php artisan vendor:publish --provider="TechEd\SimplOtp\SimplOtpServiceProvider" --tag="email"
此命令允许您根据具体要求自定义电子邮件通知模板。
电子邮件通知示例
要发送OTP通过电子邮件,您可以使用Laravel内置的通知系统以及提供的EmailOtpVerification
通知类。
$user = auth()->user(); $otp = SimplOtp::generate($user->email); if($otp->status === true){ $user->notify(new EmailOtpVerification($otp->token)); } return $otp;
此示例为认证用户的电子邮件地址生成OTP,并使用EmailOtpVerification
通知类通过电子邮件发送。
支持开发者
如果SimplOtp对您有所帮助,并且您想支持其开发,请考虑为开发者买杯咖啡!☕
您的支持非常受珍视,有助于维护和改进SimplOtp以服务于Laravel社区。