Laravel身份验证使用不同的模型而不是用户模型

时间:2017-09-25 20:14:48

标签: laravel authentication model eloquent

关于laravel身份验证的所有内容都基于用户,但我删除了用户模型并将其替换为公司模型,因此,基本上,我希望我的用户(laravel身份验证用户)成为公司。

Laravel不喜欢这个,它给了我

Type error: Argument 1 passed to Illuminate\Auth\SessionGuard::login() must be an instance of Illuminate\Contracts\Auth\Authenticatable, instance of App\company given, called in /home/dhiraj1site/Desktop/Documents/blog/vendor/laravel/framework/src/Illuminate/Auth/AuthManager.p

此错误,如果我导入类似问题中建议的可验证类。 Laravel讨厌这个并给我一个空白页面。

我有公司模型和公司表,我希望用户注册为公司,并以公司身份登录。我应该怎么做,我真的很困惑并坚持这个阶段,请帮助我理解身份验证的工作原理(我已经多次阅读身份验证文档)以及如何将'用户'更改为'公司'。

1 个答案:

答案 0 :(得分:2)

有两种方法可以为这只猫提供皮肤。 “Laravel”方式是编辑app/config/auth.php

中的设置

在该文件中,您需要将该行改为'model' => 'App\User''model' => 'App\Company'

Laravel的“陷阱”是你必须记住在新的“用户”类中实现正确的接口,公司:

use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;

class Company extends \Eloquent implements UserInterface, RemindableInterface
{
    ...
}

或者对于较新版本的Laravel,它只是一个界面:

use Illuminate\Foundation\Auth\User as Authenticatable;

class Company extends Authenticatable

我以前做过这件事,对我来说效果很好。您也可以通过扩展User类来获得创意,但我认为上面是您正在寻找的内容。 HTH