使用 Auth 门面的 guard 方法指定想要使用的 guard 实例,这种机制允许你在同一个应用中对不同的认证模型或用户表实现完全独立的用户认证。
一 、配置
该功能可用于为不同表的不同类型用户(同一个表不同类型用户理论上也可以)实现隔离式登录提供了方便,我们只要为每张表配置一个独立的 guard 就可以了。比如我们除了 users
表之外还有一张 admins
表用于存放后台管理员,要实现管理员的单独登录,就可以这么配置 auth.php
配置文件:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users', // 默认
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'admin' => [
'driver' => 'session', // 用户信息存到session里
'provider' => 'admins', // 添加admin provider
]
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class, // 这里对应的是User模型(默认)
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class, // 这里对应的是Admin模型
],
],
auth.php
配置完成后,还需要在Admin模型里修改
<?php
namespace App\Models; // 注意要和自己定义的模型命名空间一致
use Illuminate\Foundation\Auth\User as Authenticatable; // 注意这里要和User模型一样
// 这里也要和User模型一样
class Admin extends Authenticatable
{
protected $fillable = [
'name', 'password'
];
}