Laravel 6 在使用VerifiesEmail功能实现的laravel 6 API中,如何使电子邮件验证链接在验证后过期?

Laravel 6 在使用VerifiesEmail功能实现的laravel 6 API中,如何使电子邮件验证链接在验证后过期?,laravel-6,email-verification,laravel-api,Laravel 6,Email Verification,Laravel Api,我已经实现了Laravel 6 API,并使用了Laravel内置的illumb\Foundation\Auth\VerifiesEmails,但电子邮件验证链接未过期,在成功验证电子邮件后仍然可以访问。我已经找到了很多关于laravel前端的教程,但是如何在API上实现它 验证APC控制器 类验证Apicontroller扩展控制器 { 使用电子邮件; /** *将已验证用户的电子邮件地址标记为已验证。 *@param Request$Request *@return-JsonResponse

我已经实现了Laravel 6 API,并使用了Laravel内置的
illumb\Foundation\Auth\VerifiesEmails
,但电子邮件验证链接未过期,在成功验证电子邮件后仍然可以访问。我已经找到了很多关于laravel前端的教程,但是如何在API上实现它

验证APC控制器

类验证Apicontroller扩展控制器
{
使用电子邮件;
/**
*将已验证用户的电子邮件地址标记为已验证。
*@param Request$Request
*@return-JsonResponse
*/
公共函数验证(请求$Request):JsonResponse
{
$userID=$request['id'];
$user=user::findOrFail($userID);
$date=日期('Y-m-d g:i:s');
//要启用该字段的“email\u verified\u”
//通过模仿
//必须验证电子邮件功能
$user->email\u verified\u at=$date;
$user->save();
return response()->json('Email verified!');
}
/**
*重新发送电子邮件验证通知。
*@param Request$Request
*@return JsonResponse | Response
*/
公用函数重新发送(请求$Request)
{
如果($request->user()->hasVerifiedEmail()){
return response()->json('用户已验证电子邮件!',422);
}
$request->user()->sendEmailVerificationNotification();
return response()->json(“通知已重新提交”);
//return back()->带有('resent',true);
}
}
用户模型

类用户扩展Authenticatable实现MustVerifyEmail
{
使用HasapiToken,应呈报;
受保护的$fillable=[
“姓名”、“电子邮件”、“密码”
];
/**
*应为数组隐藏的属性。
*@var数组
*/
受保护的$hidden=[
“密码”、“记住令牌”,
];
/**
*应强制转换为本机类型的属性。
*@var数组
*/
受保护的$casts=[
'电子邮件在'=>'日期时间'>,
];
/**
*发送电子邮件验证通知
*/
公共函数sendApiEmailVerificationNotification()
{
$this->notify(新验证电子邮件);//我的通知
}
}
下面是验证api路由

Route::get(‘email/verify/{id}’, ‘VerificationApiController@verify’)->name(‘verificationapi.verify’);
Route::get(‘email/resend’, ‘VerificationApiController@resend’)->name(‘verificationapi.resend’)
这里是
UsersApiController


您是否实现了VerifyApiEmail类

namespace App\Notifications;

use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\URL;
use Illuminate\Auth\Notifications\VerifyEmail as VerifyEmailBase;

class VerifyApiEmail extends VerifyEmailBase
{
    protected function verificationUrl($notifiable)
    {
        return URL::temporarySignedRoute(
        'api.auth.verify', Carbon::now()->addMinutes(60), ['id' => $notifiable->getKey()]
        );
    }
}

在这里,您可以以分钟、秒或小时为单位添加过期时间。

只需阅读您提供的链接。在响应部分下。有人建议
Route::get('email/verify/{id}',API\Auth\VerificationAPIController@verify')->name('verificationapi.verify')->中间件('signed');
使链接在验证后立即过期。因此您可能只需要包含
中间件(“已签名”)
谢谢您的建议。但是如何实现此
已签名的
中间件呢。?
namespace App\Notifications;

use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\URL;
use Illuminate\Auth\Notifications\VerifyEmail as VerifyEmailBase;

class VerifyApiEmail extends VerifyEmailBase
{
    protected function verificationUrl($notifiable)
    {
        return URL::temporarySignedRoute(
        'api.auth.verify', Carbon::now()->addMinutes(60), ['id' => $notifiable->getKey()]
        );
    }
}