尝试从 laravel passport multi auth 实现的应用程序获取数据时抛出错误

问题描述 投票:0回答:0
SQLSTATE[42S22]: Column not found: 1054 Unknown column '' in 'where clause' (Connection: mysql, SQL: select * from `admins` where `` = 1 and `admins`.`deleted_at` is null limit 1)

当我尝试使用 laravel passport multi auth 实现的应用程序尝试使用带有持有者令牌的 get 方法时出现此错误

我用来实现多重身份验证的模态

<?php
namespace App\Models\Admin;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Notifications\Notifiable;
use Laravel\Passport\HasApiTokens;
use Spatie\Permission\Traits\HasRoles;

class Admin extends Model implements Authenticatable
{
   use HasFactory, SoftDeletes, HasRoles, Notifiable, 
HasApiTokens;
protected $table = 'admins';
protected $fillable = [
    'ref_key',
    'secure_key',
    'name',
    'user_name',
    'email',
    'phone',
    'mobile',
    'whatsapp',
    'password',
    'is_active',
    'status_changed_by',
];

protected $hidden = [
    'password',
    'remember_token',
];

protected $primaryKey = 'id';

protected $guard_name = 'admin';

public function getAuthIdentifierName()
{
    // TODO: Implement getAuthIdentifierName() method.
}

public function getAuthIdentifier()
{
    return $this->getKey();
}

public function getAuthPassword()
{
    return $this->password;
}

public function getRememberToken()
{
    // TODO: Implement getRememberToken() method.
}

public function setRememberToken($value)
{
    // TODO: Implement setRememberToken() method.
}

public function getRememberTokenName()
{
    // TODO: Implement getRememberTokenName() method.
}
}

这是 auth.php 文件

<?php

return [

/*
|---------------------------------------------------------------- 
----------
| Authentication Defaults
|---------------------------------------------------------------- 
----------
|
| This option controls the default authentication "guard" and 
password
| reset options for your application. You may change these 
defaults
| as required, but they're a perfect start for most applications.
|
*/

'defaults' => [
    'guard' => 'web',
    'passwords' => 'users',
],

/*
|---------------------------------------------------------------- 
----------
| Authentication Guards
|---------------------------------------------------------------- 
----------
|
| Next, you may define every authentication guard for your 
application.
| Of course, a great default configuration has been defined for 
you
| here which uses session storage and the Eloquent user provider.
|
| All authentication drivers have a user provider. This defines 
how the
| users are actually retrieved out of your database or other 
storage
| mechanisms used by this application to persist your user's 
data.
|
| Supported: "session"
|
*/

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
        'hash' => false,
       ],
    'admin' => [
        'driver' => 'passport',
        'provider' => 'admins',
    ],
],

/*
|---------------------------------------------------------------- 
----------
| User Providers
|---------------------------------------------------------------- 
----------
|
| All authentication drivers have a user provider. This defines 
how the
| users are actually retrieved out of your database or other 
 storage
| mechanisms used by this application to persist your user's 
data.
|
| If you have multiple user tables or models you may configure 
multiple
| sources which represent each model / table. These sources may 
then
| be assigned to any extra authentication guards you have 
defined.
|
| Supported: "database", "eloquent"
|
*/

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

    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users',
    // ],
],

/*
|---------------------------------------------------------------- 
----------
| Resetting Passwords
|--------------------------------------------------------------------------
|
| You may specify multiple password reset configurations if you have more
| than one user table or model in the application and you want to have
| separate password reset settings based on the specific user types.
|
| The expiry time is the number of minutes that each reset token will be
| considered valid. This security feature keeps tokens short-lived so
| they have less time to be guessed. You may change this as needed.
|
| The throttle setting is the number of seconds a user must wait before
| generating more password reset tokens. This prevents the user from
| quickly generating a very large amount of password reset tokens.
|
*/

'passwords' => [
    'users' => [
        'provider' => 'users',
        'table' => 'password_reset_tokens',
        'expire' => 60,
        'throttle' => 60,
    ],
],

/*
|--------------------------------------------------------------------------
| Password Confirmation Timeout
|--------------------------------------------------------------------------
|
| Here you may define the amount of seconds before a password confirmation
| times out and the user is prompted to re-enter their password via the
| confirmation screen. By default, the timeout lasts for three hours.
|
*/

'password_timeout' => 10800,

];

试过这个,下面的 sql 错误也根据用户表更新了列,但是当尝试使用 Bearer 令牌访问数据时仍然出现这个错误

laravel laravel-passport laravel-authentication
© www.soinside.com 2019 - 2024. All rights reserved.