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



我创建了一个自定义用户模型,其中包含自定义受保护$table名称。但是控制器中的尝试方法会继续搜索并使用默认方法("用户"模型和"用户"选项卡)奇怪的部分是,在 Laravel 5.2 中它可以工作。也许只是我错过了一件愚蠢的事情,但为什么它在 5.1 上不起作用?谢谢你的时间。

型:

namespace App;
use IlluminateDatabaseEloquentModel;
class CustomUser extends Model
{
    protected $table ='myuserstab';
}

控制器:

namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppHttpRequests;
use AppHttpControllersController;
use Auth;
use AppCustomUser;
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 AppCustomUser::class, or 
    'model' => AppUser::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' => AppUser::class,
    ],
    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users',
    // ],
],

您可能需要考虑使用自己的自定义模型进行身份验证的含义,因为 User 模型设置为执行许多现成的操作,您可能需要自己解决。浏览文档应该为您澄清此类注意事项。

相关内容

最新更新