0

我使用 Nova 作为 SAAS 应用程序的后端,所以基本上去 app.mydoain.com 只会弹出 Nova 登录表单。我想要标准使用的 Laravel 5.7 电子邮件验证(所以当我添加用户时,他们必须在登录之前验证电子邮件)。

在 config/nova.php 我添加了中间件:

 'middleware' => [
        'verified',
        'web',
        Authenticate::class,
        DispatchServingNovaEvent::class,
        BootTools::class,
        Authorize::class,
    ],

在 User.php 模型中,我实现了它(这与 webiste docs 的做法不同?)

<?php

namespace App;

use Illuminate\Auth\MustVerifyEmail;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Contracts\Auth\MustVerifyEmail as MustVerifyEmailContract;

class User extends Authenticatable implements MustVerifyEmailContract
{
    use MustVerifyEmail, Notifiable;

....

我在 web.php 中添加了一些路由仅用于验证(不需要任何其他身份验证)

Route::get('email/verify', 'Auth\VerificationController@show')->name('verification.notice');
Route::get('email/verify/{id}', 'Auth\VerificationController@verify')->name('verification.verify');
Route::get('email/resend', 'Auth\VerificationController@resend')->name('verification.resend');

在我登录后,它就会停止运行,然后转到/email/verify/。在我的数据库中,我已经添加了一个时间戳,所以它根本不应该去,/email/verify什么时候去/它超时。

如果我verified从配置中的中间件中删除它可以正常工作,但没有电子邮件验证检查。

4

1 回答 1

2

更改中间件的顺序。

'middleware' => [
        'web',
        Authenticate::class,
        'verified',
        DispatchServingNovaEvent::class,
        BootTools::class,
        Authorize::class,
    ],

您的请求必须先通过网络。由于重定向循环,您很可能会超时。

于 2019-02-04T07:12:32.483 回答