2017-01-03 181 views
2

我想对两个不同的表使用laravel 5.3身份验证。 通过使用laravel身份验证将如何可能?Laravel 5.3多重身份验证设置

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

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

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

而且, 如果我们使用默认的laravel认证,我们不能设置路由? 我的意思是,我可以访问它,并在路线上进行更改,但是当注册后,它会返回到默认路线。 我不知道是否有任何的方式来重写..

非常感谢

+1

PLZ包括需要的代码行以便更好地理解情况 – Kalanka

+0

_不要为不同的用户类型创建多个表。这只会导致头痛。如果你有一个“用户”表和一个表,“管理员”表;当你引入第三个用户类型时会发生什么?你打算创建另一个模型,控制器,视图,认证守卫等吗?只需拥有“用户”,然后使用授权来确定他们在应用程序中可以做什么和不可以做什么。 –

回答

3

你说的正确的table.You意味着应编辑您在寄存器控制器 防爆科目编号表名: -

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

     ]); 
+0

我编辑了正确的表名。 但我认为该功能没有执行.. 因为当我尝试返回一个字符串,它不会被执行。 执行默认功能。 我想,有没有什么办法,我可以通过警卫认证系统,所以,我可以重复使用认证码,而不需要复制它的一套 –

+0

您是否在注册控制器中使用了所需的模型?你有没有提到你的代码需要“返回”?前; - 返回$用户;在你的功能 –

+0

是的,我做了。 我终于完成了。 显然,错误在于视图文件.. 我没有重写视图文件,它用于默认身份验证。 当我整理出来后,我终于能够实现我想达到的目标.. 非常感谢,Mindi –

3

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

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', 

    ], 

尝试一下...... 很抱歉,如果我我错了..

+0

它更好,如果你更清楚你想要什么,与代码段,, ISN 't it brother ... – SalindaKrish

1

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

假设您使用自动生成的认证控制器,视图和路由。 导航到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'; 

关于验证的路线。他们自动地被下面的行放在/routes/web.php

Auth::routes(); 

您可以通过删除此与您期望的验证路径替换它改变这种

+0

Ya,但函数create()没有执行.. 现在,我正在定义两组相似的函数 所有存储在具有不同名称空间的两个不同文件夹中,并且我指定create()函数来存储不同的模型.. 在AdminAuth中,我使用Admins :: create(); 在Auth中,我使用Users :: create(); 但似乎在AdminAuth中创建的函数没有执行,因为它甚至在我尝试返回字符串时甚至不返回字符串。 我想如果我们可以指定在注册过程中使用哪个警卫,认证系统,那会更好。谢谢 –

0

在auth.php这是被定义,这将设置使用用户模型。你可以改变她的模型

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