如何在laravel中更改用户模型,以便在认证中使用其他表格而不是users表格?
如何在laravel中更改用户模型,以便在认证中使用其他表格而不是users表格?
在laravel 5.3中,如何更改默认的用户模型以使用其他数据库表而不是users表?仅仅添加protected $table = \'my_table_name\';
是否足够,还是我需要更改提供者和其他内容?\n我不想使用多个身份验证,如管理员、客户等,我只想要一个身份验证模型,但不带有表\"users\"。\n我正在准备一个应用程序,其中有多种类型的用户,如管理员、占星师和普通用户。它们都有不同的属性,所以我不能使用单个具有访问控制的模型,于是我决定将应用程序分成3个网站,使用同一个数据库,并将它们托管在子域名中,如admin.mywebsite.com astrologer.mywebsite.com www.mywebsite.com
。\n之前我使用了multiauth/hesto插件,但出于某种奇怪的原因,在登录和注册后它没有将我重定向到预期的URL。非常感谢任何帮助。
在Laravel中更改用户模型以使用其他表进行身份验证的问题是因为在Laravel 5.3中,用户身份验证的配置与Laravel 5.2有所不同,导致无法成功实现更改用户模型的操作。
解决这个问题的方法是打开`config\auth.php`文件,并修改其中的配置。在`guards`数组中,添加一个新的键值对,以定义新的身份验证卫士。将`driver`设置为`session`,将`provider`设置为新的提供程序名称。在`providers`数组中,添加一个新的键值对,以定义新的提供程序。将`driver`设置为`eloquent`,将`model`设置为新的用户模型类名。
具体配置如下:
'guards' => [ 'astrologer' => [ 'driver' => 'session', 'provider' => 'astrologer', ], 'admin' => [ 'driver' => 'session', 'provider' => 'admin', ], ], 'providers' => [ 'astrologer' => [ 'driver' => 'eloquent', 'model' => App\Astrologer::class, ], 'admin' => [ 'driver' => 'eloquent', 'model' => App\Admin::class, ], ],
请注意,以上代码中的`App\Astrologer::class`和`App\Admin::class`应替换为实际的用户模型类名。
如果需要更详细的解释,可以参考这个链接:Can anyone explain Laravel 5.2 Multi Auth with example。
希望这对你有帮助,请记得实现身份验证接口。如果你有任何进展,请分享你的操作。
您可以使用模型中的$connection
属性指定要使用的数据库:
class MyModel extends Eloquent { protected $connection = 'another-database-connection'; }
不过我不确定这是否是您要寻找的。话虽如此,如果您想要在同一Laravel应用程序中使用多个子域名,我建议您查阅文档,其中解释了如何在路由中使用子域名:
https://laravel.com/docs/5.3/routing#route-group-sub-domain-routing
这样可以让您拥有一个User
类和一个应用程序,但为您的3个子域名设置特定的路由。
我希望在所有三个子域名中使用相同的连接,唯一的要求是将User模型更改为使用"astrologers"表而不是"user"表,并使用"admin"表来管理admin子域名。
那么我认为您需要有一个User
模型,然后再有一个Astrologer
模型和一个Admin
模型,它们都会与User
模型建立belongsTo
关系。
在Laravel中,用户认证默认使用名为"users"的数据表。然而,有时候我们希望使用其他的数据表来进行认证。下面是解决这个问题的方法:
首先,我们可以参考这篇文章:Using Different Table for Auth in Laravel。
接下来,我们需要编辑配置文件app/config/auth.php,将"table"的值改为我们想要使用的数据表名,比如"yourTable"。同时,将"model"的值改为我们自定义的用户模型名,比如"YourModel"。
然后,我们需要定义一个新的用户模型。在这个模型中,我们需要使用一些Laravel提供的trait,包括UserTrait和RemindableTrait。同时,我们还需要实现UserInterface和RemindableInterface接口。
在这个自定义的用户模型中,我们需要指定使用的数据表名,比如"your_table"。我们还可以定义fillable属性,指定允许批量赋值的字段,比如"UserName"和"Password"。最后,我们可以选择是否启用自动维护时间戳,并定义静态变量$rules来设置验证规则。
下面是一个示例的自定义用户模型:
use Illuminate\Auth\UserTrait; use Illuminate\Auth\UserInterface; use Illuminate\Auth\Reminders\RemindableTrait; use Illuminate\Auth\Reminders\RemindableInterface; class YourModel extends Eloquent implements UserInterface, RemindableInterface { use UserTrait; use RemindableTrait; protected $table = 'your_table'; protected $fillable = array('UserName', 'Password'); public $timestamps = true; public static $rules = array(); }
通过以上步骤,我们就可以在Laravel中使用不同的数据表来进行用户认证了。