使用自定义路由进行Laravel身份验证

问题描述 投票:1回答:1

在电子邮件验证路由中,我想通过在URL中添加语言来更改路由。例如,我们希望有/ fr / email / verify,而不是/ email / verify。

路线

// Email Verification Routes
Route::get('{lg?}/email/verify', 'Auth\VerificationController@show')
    ->name('verification.notice')
    ->where('lg', '(fr)|(en)');

在EnsureEmailIsVerified类中,用户使用“verification.notice”路由:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Contracts\Auth\MustVerifyEmail;

class EnsureEmailIsVerified
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (!$request->user() ||
            ($request->user() instanceof MustVerifyEmail &&
                !$request->user()->hasVerifiedEmail())) {
            return $request->expectsJson()
                ? abort(403, 'Your email address is not verified.')
                : Redirect::route('verification.notice');
        }

        return $next($request);
    }
}

遗憾的是,Redirect::route('verification.notice')重定向到/ email / verify而不是en / email / verify(或fr / email / verify)。我错过了什么?

laravel laravel-5.7 laravel-authentication
1个回答
0
投票

我没有访问我的开发机器,但有一些东西

Redirect::route('verification.notice', ['lg' => 'en'])

要么

redirect()->route('profile', ['lg' => 'en']);

应该管用。

© www.soinside.com 2019 - 2024. All rights reserved.