【发布时间】:2021-03-24 21:16:51
【问题描述】:
在互联网和论坛中进行了大量搜索后,我放弃了...
我正在使用 Laravel 8 开发一个休息 api,我从一周开始就尝试使用 officiel documentation 进行电子邮件验证,一旦用户注册event(new Registered($user));
,电子邮件总是会成功发送
问题是,一旦我点击收到的电子邮件中的链接,我就会被重定向到登录页面(在这种情况下是一个帖子呼叫)..
这是我的路线/api.php:
Route::group(['namespace' => 'App\Http\Controllers', 'middleware' => ['api'], 'prefix' => 'auth'], function ($router) {
Route::post('login', 'AuthController@login')->name('login');
Route::post('register', 'AuthController@register');
Route::post('logout', 'AuthController@logout');
Route::post('profile', 'AuthController@profile')->middleware('verified');
Route::post('refresh', 'AuthController@refresh');
});
Route::group(['namespace' => 'App\Http\Controllers', 'middleware' => ['api']],function ($router) {
Route::get('/email/verify/{id}/{hash}', 'VerificationController@verify')->middleware(['auth', 'signed'])->name('verification.verify');
Route::get('/email/resend', 'VerificationController@resend')->middleware(['auth', 'throttle:6,1'])->name('verification.send');
});
这里是我的 VerificationController:
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Foundation\Auth\EmailVerificationRequest;
class VerificationController extends Controller
{
public function resend(Request $request)
{
$request->user()->sendEmailVerificationNotification();
return response()->json(['message' => __('auth.email_sent')], Response::HTTP_NO_CONTENT);
}
public function verify(EmailVerificationRequest $request)
{
$request->fulfill();
return response()->json(['message' => __('auth.user_verified_successfully')], Response::HTTP_RESET_CONTENT);
}
}
最后但同样重要的是,我根据需要将 LogVerifiedUser 事件添加到 EventServiceProvider。
有什么建议吗?我试图从 verify 路由中删除中间件 auth,但这对我没有帮助...
PS:我正在使用 JWT 进行身份验证
【问题讨论】:
-
您使用的是前端 SPA (React/Vue/Angular) 还是普通的多页应用程序?如果它是一个多页面应用程序,那么您的 web 中间件可能会将您重定向到登录页面。检查您的 web.php
-
我正在使用前端 SPA(角度)
标签: php laravel laravel-8 email-verification