【问题标题】:Laravel 5.3 Multi Authentication setupLaravel 5.3 多重身份验证设置
【发布时间】:2017-01-03 09:36:52
【问题描述】:

我想对两个不同的表使用 laravel 5.3 身份验证。 使用 laravel 认证怎么可能?

我已经设置了 auth.php 文件,并添加了警卫, 创建一个新模型,并迁移必要的文件。

我复制了控制器,更新了命名空间,并指定了路由。 而且,是的,我能够访问那个路由,到那个特定的控制器..

但是,当我注册时,它会转到用户表。 为什么以及如何将其设置为正确的表? 我以为警卫会做这项工作。

还有, 如果我们使用默认的 laravel 身份验证,我们无法设置路由? 我的意思是,我可以访问它,并在路线上更改它,但是当注册后,它会回到默认路线。 我想知道是否有任何方法可以覆盖它..

非常感谢

【问题讨论】:

  • 请包含所需的代码行以更好地了解情况
  • 不要为不同的用户类型创建多个表。它只会引起头痛。如果您有一个“用户”表和一个“管理员”表;当您引入 第三个 用户类型时会发生什么?你要创建另一个模型、控制器、视图、auth guard 等吗?只需拥有“用户”,然后使用授权来确定他们在您的应用程序中可以做什么和不可以做什么。
  • 有一篇非常好的帖子与这个主题相关。在 Laravel 中创建 Multi Auth 的分步过程。 gautammenariya.com/2018/11/…

标签: php laravel-5 laravel-5.3


【解决方案1】:

正确的表格是什么意思。您应该在寄存器控制器中编辑您需要的表格名称 例如:-

$company=  Company::create([
             'companyname' =>($data['companyname']),
             'Address1' =>($data['Address1']),
             'Address2' =>($data['Address2']),
             'telephone' =>($data['telephone']),

        ]);

【讨论】:

  • 我已经编辑了正确的表名。但我认为该函数没有执行..因为当我尝试返回一个字符串时,它没有执行。执行默认功能。我在想,有什么办法可以将保护传递给身份验证系统,这样我就可以重用身份验证代码而无需复制一组代码
  • 您在Register控制器中使用了所需的模型吗?您是否提到了代码所需的“返回”? ex;- 返回 $users;在你的函数内部
  • 是的,我做到了。我终于完成了。显然,错误在于视图文件。我没有覆盖用于默认身份验证的视图文件。在我整理出来之后,我终于能够实现我想要实现的目标.. 非常感谢,Mindi
【解决方案2】:

我也是新手,但尝试更改注册控制器中的表

protected function create(array $data)
{

    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
        'user_type'=>$data['user_type'],

    ]);

将“用户”替换为您要输入的数据..

据我了解,auth.php... 在那里我们使用模型(表)登录..

'providers' => [
    'users' => [

        'driver' => 'eloquent',

        'model' => App\Models\User::class,
        'table' => 'users',

    ],

试试看... 对不起,如果我错了..

【讨论】:

  • 如果你更清楚你想提出什么,用代码段,是不是兄弟...
【解决方案3】:

但是,当我注册时,它会转到用户表。为什么以及如何将其设置为 正确的表?

假设您使用的是自动生成的身份验证控制器、视图和路由。 导航到app/Http/Controllers/Auth/RegisterController.php 将using YourModelName 添加到顶部并将以下函数更改为您自己的模型。

 protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }

如果我们使用默认的 laravel 认证,我们无法设置路由?

如果你的意思是注册后重定向,你也可以在RegisterController中设置它

 /**
 * Where to redirect users after registration.
 *
 * @var string
 */
protected $redirectTo = '/home';

关于 Auth 路由。它们由/routes/web.php 中的以下行自动设置

Auth::routes(); 

您可以通过删除它并将其替换为您想要的 Auth 路由来更改它

【讨论】:

  • 是的,但是函数 create() 没有执行.. 现在,我正在定义两组类似的函数全部存储在具有不同命名空间的两个不同文件夹中,我指定 create()存储不同模型的功能.. 在 AdminAuth 中,我使用 Admins::create();在 Auth 中,我使用 Users::create();但似乎在 AdminAuth 中创建的函数没有执行,因为当我尝试返回字符串时它甚至不返回字符串。我在想如果我们可以指定在注册期间使用哪个保护,到默认身份验证系统,它会更好。谢谢
【解决方案4】:

在 auth.php 中定义了它将使用用户模型。你可以改变她的模型

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

【讨论】:

    猜你喜欢
    • 2017-01-25
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 2017-05-25
    • 2017-05-13
    • 2017-06-18
    • 1970-01-01
    • 2017-02-08
    相关资源
    最近更新 更多