【问题标题】:Laravel Authentication using different model rather than the user modelLaravel 身份验证使用不同的模型而不是用户模型
【发布时间】:2018-03-06 21:52:21
【问题描述】:

关于 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 讨厌这个,给了我一个空白页。

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

【问题讨论】:

  • 请发布您的code
  • 您是否通过extends Authenticatable 扩展了您的Comany 模型?

标签: laravel authentication model eloquent


【解决方案1】:

有几种方法可以给这只猫 zuif 剥皮。 'Laravel' 方式是编辑 app/config/auth.php 中的设置

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

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

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 类来获得创意,但我认为以上就是您正在寻找的。 高温

【讨论】:

  • 谢谢。它给了我 Interface 'Illuminate\Auth\UserInterface' not found 错误
  • 抱歉,不确定您使用的是哪个版本的 Laravel。我编辑添加了更新版本的界面。请尝试以上方法。
  • 嘿,我遇到了一个不同的问题,所以公司可以完美注册,但是那些公司无法登录,auth::attempt 不识别用户名/密码组合,我想知道这是不是以某种方式与将用户更改为公司有关?有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 2019-07-01
  • 2018-10-29
  • 2018-04-17
  • 2016-05-23
  • 2018-06-08
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多