我正在使用fortify进行用户认证和管理。我正在制作一个rest API应用程序,我想使用use Laravel\Fortify\Http\Controllers\VerifyEmailController
或实现VerifyEmailResponse
,但我得到的是route [login] not defined
我没有/login
路由,因为我创建了一个rest API /api/login
下面是我的FortifyServiceProvider的外观
public function register (): void
{
$this->app->instance(VerifyEmailResponse::class, new class implements VerifyEmailResponse {
public function toResponse($request)
{
if ($request->user->hasVerifiedEmail()) {
return response()->ok(null, __('Email already verified.'));
}
$request->user->markEmailAsVerified();
event(new Verified($request->user));
return response()->ok(null, __('Email successfully verified!'));
}
});
}
它没有返回我想要的响应,它将我重定向到登录路径。我使用返回正确响应的特定控制器创建了一个工作解决方案。我认为它与Fortify使用的控制器相同
class EmailVerificationController extends Controller
{
public function __invoke(Request $request)
{
$user = User::findOrFail($request->route('id'));
if ($user->hasVerifiedEmail()) {
return response()->ok(null, __('Email already verified.'));
}
$user->markEmailAsVerified();
event(new Verified($user));
return response()->ok(null, __('Email successfully verified!'));
}
}
我称之为
Route::get('/email/verify/{id}/{hash}', [EmailVerificationController::class, '__invoke'])->middleware(['signed', 'throttle:6,1'])->name('verification.verify');
有没有可能使用fortify功能或者需要像我做的那样定制?
1条答案
按热度按时间1qczuiv01#
你可以做的一件事是首先忽略fortifyServiceProvider.php中的fortify路由在register方法中,如下所示:
在您fortifier.php中:
在你的web.php中你可以创建一个路由并调用fortify控制器:
或者如果你愿意,你可以创建一个控制器,并从Fortify控制器扩展它。我想出了这个解决方案。我希望它对你有帮助。请让我知道这是否会解决你的问题或没有。