Я впервые пробую laravel sanctum.
Я хочу выпустить токены для красноречивой модели под названием «Кампания».
Это мой Campaign.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Laravel\Sanctum\HasApiTokens;
class Campaign extends Model
{
use HasApiTokens;
protected $guarded = ['id'];
public function users()
{
return $this->belongsToMany(User::class)->withPivot(['percentage'])->withTimestamps();
}
}
Как видите, я добавил к нему черту HasApiTokens
.
С его помощью я могу выпустить токен на любую подобную кампанию:
$campaign->createToken('my-token-name');
Все идет нормально. Он работает и правильно хранится в базе данных.
Проблема начинается, когда я пытаюсь использовать токен для выполнения любого запроса, защищенного промежуточным программным обеспечением sanctum. Это ошибка, которая появляется, когда я это делаю:
Call to undefined method App\\Campaign::getAuthIdentifier()
Что ж, я предполагаю, что этот getAuthIdentifier()
происходит из класса use Illuminate\Foundation\Auth\User
, который обычно импортируется в модель User как Authenticatable
;
Я попытался создать этот метод на своей модели Campaign и попробовать, вот что я сделал:
public function getAuthIdentifier()
{
return 'id';
}
Когда я попытался опубликовать еще раз, похоже, это сработало. Но я думаю, что это неправильно, потому что это немного странно. И становится еще хуже, когда я вызываю auth()->user()
и получаю доступ к объекту Campaign. Я знаю, что это следствие того, что я здесь сделал.
Может ли этот пакет выдавать токены на основе чего-то, что на самом деле не является пользователем?
Если вы знаете, как это сделать правильно, буду благодарен за ответ :)