Laravel 5.1.11 中的身份验证 - 它继续使用默认 'User' 模型并搜索 'users' 选项卡

Authentication in Laravel 5.1.11 - it keeps using default 'User' model and searching 'users' tab

我已经创建了一个自定义用户模型,具有自定义受保护的 $table 名称。 但是控制器中的尝试方法一直在搜索并使用默认方法('User' 模型和 'users' 选项卡) 奇怪的是,在 Laravel 5.2 中它起作用了。 也许只有我错过了一件愚蠢的事情,但为什么它在 5.1 上不起作用? 谢谢你的时间。

型号:

namespace App;
use Illuminate\Database\Eloquent\Model;

class CustomUser extends Model
{
    protected $table ='myuserstab';
}

控制器:

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use Auth;
use App\CustomUser;

class loginController extends Controller
{

    public function login(Request $request)
    {

        $username= $request['username'];
        $password = $request['password'];
        if(Auth::attempt(['username'=>$username, 'password'=>$password]))
        {
          doSomething...
        }
        else 
        {
         doSomethingelse...
        }
    }
...
}

我想你想更改 config/auth.php

中的设置

return [

    'driver' => 'eloquent',

    // change this to App\CustomUser::class, or 
    'model' => App\User::class,whatever your model namespace is

     // change this to 'myuserstab'
    'table' => 'users',

];

值得从文档中阅读:

https://laravel.com/docs/5.1/authentication#introduction-database-considerations

5.2 支持多个身份验证提供程序,所以也许您可以同时使用它们?如果您查看 5.2 中的配置文件,您会看到以下内容:

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],

    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users',
    // ],
],

您可能需要考虑使用您自己的自定义模型进行身份验证的影响,因为用户模型设置为可以立即完成许多您可能需要自己解决的事情。查看文档应该为您阐明这些注意事项。