【问题标题】:Use custom route for Laravel authentication使用自定义路由进行 Laravel 身份验证
【发布时间】:2019-02-10 03:44:11
【问题描述】:

在电子邮件验证路由中,我想通过在 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)。我错过了什么?

【问题讨论】:

  • 您不需要将 en 或 fr 字符串传递给重定向吗? IE:Redirect::route('verification.notice', 'fr') 您当前的重定向工作正常,因为重定向中未提供 {lg?},它转到 /email/verify

标签: laravel laravel-5.7 laravel-authentication


【解决方案1】:

我无法访问我的开发机器,但类似于

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

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

应该可以。

【讨论】:

    猜你喜欢
    • 2016-09-15
    • 1970-01-01
    • 2019-11-19
    • 2015-02-23
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多