Laravel重置密码,找不到类'\ App \ User'

I am trying to create a reset password URI, and it is there and uses the Laravel built in reset password system, but when I test it, I get:

FatalErrorException in EloquentUserProvider.php line 126: Class '\App\User' not found

This is my config/auth.php:

/*
|--------------------------------------------------------------------------
| Authentication Model
|--------------------------------------------------------------------------
|
| When using the "Eloquent" authentication driver, we need to know which
| Eloquent model should be used to retrieve your users. Of course, it
| is often just the "User" model but you may use whatever you like.
|
*/

'model' => App\User::class,

And this is is my app/Http/routes.php:

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/

Route::post('register', 'RegisterController@register');

Route::post('resetpassword', 'Auth\PasswordController@postEmail');

Route::resource('api/authenticate', 'AuthenticateController', ['only' => ['index']]);
Route::post('api/authenticate', 'AuthenticateController@authenticate');

//All protected routes should go in this group
Route::group(['middleware' => 'isUserAuthed'], function () {
  Route::get('restricted', 'WelcomeController@welcome');
});

My User class is located at app/User.php:

<?php

namespace App;

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements AuthenticatableContract,
                                AuthorizableContract,
                                CanResetPasswordContract
{
use Authenticatable, Authorizable, CanResetPassword;

/**
 * The database table used by the model.
 *
 * @var string
 */
protected $table = 'users';

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = ['name', 'username', 'password', 'role', 'active', 'email'];

/**
 * The attributes excluded from the model's JSON form.
 *
 * @var array
 */
protected $hidden = ['password', 'remember_token'];
}

Can someone point me in the right direction? The documentation for this doesn't seem very clear to me.

\App\User should be able to be found by EloquentUserProvider

Have you tried running this command in your applications folder?

composer dump-autoload

Your file name should be User.php not user.php

Try removing ::class

'model' => 'App\User',

I think that is possibly because a problem with the namespace of the User model or the namespace of the project.

Check this:

  1. In the User model the namespace is 'App' or is different? this must match.
  2. Do you try to change the project namespace for some reason? Check in the composer.json file in the line that says: "psr-4": { "App\\": "app/" .... Check if it is different than App (must match with case sensitive).

Hope it helps.

Let me invite you to the Learn Laravel course, I'm sure you are going to found it useful for your projects.

Best wishes.