You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Laravel Passport以使用自定义employee表替代默认users表

配置步骤

1. 调整Employee模型

首先确保你的Employee模型继承Laravel的认证基类,同时引入Passport的Api Token Trait,显式指定对应表名:

<?php

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Passport\HasApiTokens; // 必须引入Passport的trait

class Employee extends Authenticatable
{
    use HasApiTokens;

    protected $table = 'employee'; // 显式指定表名
    // 如果表主键不是id,新增下面一行,替换为实际主键字段
    // protected $primaryKey = 'emp_id';
    // 配置可批量赋值字段,替换为employee表的实际字段
    protected $fillable = [
        'name', 'email', 'password',
    ];
    // 隐藏敏感字段
    protected $hidden = [
        'password', 'remember_token',
    ];

    // 如果你的密码字段不是password,新增下面方法重写认证字段
    // public function getAuthPassword()
    // {
    //     return $this->emp_pwd;
    // }
}

2. 修改认证配置

打开config/auth.php文件,修改两处核心配置:

  • 调整用户提供者配置,把默认关联的模型替换为Employee
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\Employee::class, // 替换为你的Employee模型实际路径
    ],
    // 也可以单独新增employee专属提供者,后续把guard的provider指向它即可
    /*
    'employees' => [
        'driver' => 'eloquent',
        'model' => App\Models\Employee::class,
    ],
    */
],
  • 调整api guard的驱动和关联提供者
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'passport', // 确保驱动为passport
        'provider' => 'users', // 如果单独新增了employees提供者,这里填employees
        'hash' => false,
    ],
],

3. 配置Passport使用自定义用户模型

打开app/Providers/AuthServiceProvider.php,在boot方法中添加Passport用户模型指定:

use Laravel\Passport\Passport;
use App\Models\Employee;

public function boot()
{
    $this->registerPolicies();
    // 新增这行,指定Passport用Employee模型完成认证逻辑
    Passport::useUserModel(Employee::class);

    // 原有Passport配置(如令牌过期时间等)无需修改
}

4. 适配登录逻辑

如果你的employee表的登录用户名字段不是email,只需要修改现有登录代码里Auth::attempt的数组键名即可,比如用工号emp_no登录就改成:

if(Auth::attempt(['emp_no' => request('emp_no'), 'password' => request('password')])){
    // 原有生成token、返回响应的逻辑完全不用修改
}

5. 生效配置

执行命令清理配置缓存即可:

php artisan config:clear

内容的提问来源于stack exchange,提问作者Eggy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:54:02