Вызов функции-члена hasVerifiedEmail() при нулевом значении

Я использую Laravel 7 и пытаюсь проверить свою электронную почту. Я выполнил все шаги, указанные в документации, но я все еще получаю эту ошибку, пожалуйста, исправьте эту ошибку, спасибо.

введите здесь описание изображения

Я добавил код модели пользователя здесь

<?php

namespace App;

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

class User extends Authenticatable implements MustVerifyEmail
{
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'first_name', 'last_name', 'email', 'password', 'permissions'
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}

вот веб.php

Auth::routes(['verify'=> true]);

Route::prefix('student')->middleware(['auth', 'verified'])->group(function () {
    Route::get('dashboard', 'StudentController@dashboard');
});

person Tayyab Hanif    schedule 11.05.2020    source источник
comment
Можете ли вы показать свой код модели пользователя?   -  person Akhtar Munir    schedule 12.05.2020
comment
также маршрут, по которому он перенаправляется после успешного входа в систему.   -  person Akhtar Munir    schedule 12.05.2020


Ответы (3)


$request отправляет значение null, потому что вам необходимо войти в систему (аутентифицироваться), чтобы получить экземпляр $user

person Makdous    schedule 12.05.2020

Убедитесь, что у вас есть промежуточное ПО auth на вашем маршруте.

Назначение промежуточного программного обеспечения для маршрутов:

Route::get('admin/profile', function () {
    //
})->middleware('auth');

или группы промежуточного программного обеспечения:

Route::group(['middleware' => ['auth']], function () {
    Route::get('admin/profile', function(){
        //your function here
    });
});

Официальный документ Laravel

person Greyson Yee    schedule 25.02.2021

только зарегистрированные пользователи могут получить функцию hasVerifiedEmail() , из-за этого вы получаете ответ: вызов функции-члена hasVerifiedEmail() на null , чтобы исправить эту проблему, вы должны настроить функцию показа в VerificationController.php

public function show(Request $request)
    {
//login user
        if (auth()->user())
        {
            return $request->user()->hasVerifiedEmail()
                ? redirect($this->redirectPath())
                : view('auth.verify');
        }
//guest
        else
        {
            return $request->user()
                ? redirect($this->redirectPath())
                : redirect('/login');
        }

    }
person saidhr20    schedule 26.07.2020