rasulian / laravel-user-verification
用于用户邮箱和电话号码验证的激活码包
This package is not auto-updated.
Last update: 2024-09-15 04:36:56 UTC
README
一个简单的包,通过令牌和代码号激活用户。
此包允许您通过发送电子邮件的令牌和短信的代码号来验证用户。
安装
此包可用于Laravel 5.4或更高版本。
您可以通过composer安装此包
composer require rasulian/laravel-user-verification
在Laravel 5.5中,服务提供程序将自动注册。在框架的旧版本中,只需在config/app.php文件中添加服务提供程序即可
'providers' => [ // ... Rasulian\Verification\VerificationServiceProvider::class, ];
您可以在config/app.php中添加以下别名
'aliases' => [ // ... 'Verification' => Rasulian\UserVerification\Facades\Verification::class,
通过运行以下命令发布包配置和数据库迁移文件
php artisan vendor:publish --provider="Rasulian\Verification\VerificationServiceProvider::class"
配置
迁移
表示用户模型的表必须使用verified
列进行更新。此更新将由此包中包含的迁移执行。
请确保您的用户表中没有此列。
如果您的用户表名不是users
,您可以在config/verification.php
中更改它。
现在您可以按常规方式进行迁移
php artisan migrate
中间件
此包提供了一个可选的中间件,抛出UserVerifiedMiddleware
。请参阅Laravel 文档以了解有关如何与异常处理器一起工作的更多信息。
要注册默认中间件,请在app/Http/Kernel.php
文件中的$routeMiddleware
数组中添加以下行
protected $routeMiddleware = [ 'user.verified' => \Rasulian\UserVerification\Middlewares\UserVerifiedMiddleware::class, ];
您可以使用此中间件来处理需要用户邮箱或电话号码验证的路由
Route::middleware('auth', 'user.verified')->group(function () { // Routes here });
错误
此包抛出了几个异常。您可以使用try\catch
语句或Laravel异常处理器。
UserIsVerifiedException
给定的用户已验证UserNotVerifiedException
给定的用户未验证VerifyTokenMismatchException
给定的令牌错误或不可用VerifyCodeMismatchException
给定的代码错误或不可用
使用方法
路由
默认情况下,此包提供了一条用于通过令牌验证用户的路由。
Route::get('user/verification/{token}', 'App\Http\Controllers\Auth\RegisterController@verifyUser') ->name('user.verify');
覆盖包路由
要定义自己的自定义路由,请将包服务提供程序的调用放在config/app.php文件中RouteServiceProvider
调用之前。
/* * Package Service Providers... */ Rasulian\UserVerification\VerificationServiceProvider::class, /* * Application Service Providers... */ App\Providers\RouteServiceProvider::class,
然后,在您的路由文件中添加自定义路由。
外观
此包提供了一个外观Verification::。
verification 配置文件
发布包配置后,它将位于config目录下。您可以自由更改表示存储令牌和代码的字段的用户表user
和user_verifications
的表名。
<?php return [ 'table_names' => [ 'users' => 'users', 'user_verifications' => 'user_verifications' ], /** * number of hours that needs to pass before * we generate a new token\code but only if user request it. */ 'generate_after' => 24 ];
如何使用此包
此包尽可能简单。它为用户创建一个令牌和代码,并通过令牌或代码验证用户。
以下是生成令牌、将其作为电子邮件发送并验证它的示例。
编辑App\Http\Auth\RegisterController
文件
<?php namespace App\Http\Controllers\Auth; use App\Mail\Welcome; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Mail; use Rasulian\UserVerification\Facades\Verification; class RegisterController extends Controller { // // Code // /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware('guest', ['except' => 'verifyUser']); } // // Code // /** * The user has been registered. * * @param \Illuminate\Http\Request $request * @param mixed $user * @return mixed */ protected function registered(Request $request, $user) { $token = Verification::getVerificationToken($user); $url = route('user.verify', $token); Mail::to($user->email)->send(new Welcome($url)); return redirect('/home')->with('success', 'Registered. Verify your email!'); } public function verifyUser($token) { $user = Verification::verifyUserByToken($token); if (auth()->guest()) auth()->login($user); return redirect('/home')->with('success', 'Your email verified successfully!'); } }
在这里,我们使用registered
方法创建令牌并发送它,这将覆盖\Illuminate\Foundation\Auth\RegistersUsers@registered
方法。我们为给定的用户获取一个令牌,将其作为url,并通过电子邮件发送。
如果用户点击链接,将执行verifyUser
方法。这里我们通过提供的令牌验证用户。
请确保在构造函数中将verifyUser
添加到guest
中间件的except
数组中。
重新启动进程
如果您想要重新生成和重新发送验证令牌,可以使用getVerificationToken
方法。
生成方法将为指定用户生成新的令牌,并将verified
列更改为false
。
贡献
请随意评论、贡献和帮助。1 PR = 1 功能。
许可证
Laravel 用户验证在MIT 许可证(MIT)下授权。