我第一次尝试 laravel sanctum。
我想为名为 Campaign 的 Eloquent 模型发行代币。
这是我的 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 对象时,情况会变得更糟。我知道这是我在这里所做的事情的结果。
这个包可以基于不是用户的东西来发行令牌吗?
如果您知道如何正确操作,我将不胜感激:)