首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel Sanctum tokens()未定义

Laravel Sanctum tokens()未定义
EN

Stack Overflow用户
提问于 2021-04-07 11:40:55
回答 1查看 972关注 0票数 2

我是第一次接触laravel,正在尝试构建一个api,用于使用sanctum进行登录。

我遵循了文档和一些教程,但我遇到了一个错误,即使在使用HasApiToken时,我的用户类也无法访问令牌函数。

下面是我的用户模型:

代码语言:javascript
复制
<?php

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name',
        'email',
        'password',
        'alt_id',
        'country_id',
        'birth'
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'type',
        'password',
        'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];

    public function country()
    {
        return $this->hasOne(Country::class);
    }
}

这是错误消息1:https://i.stack.imgur.com/QzGK9.png

我还检查了config/auth.php中的路由,它是App\Models\User::class

EN

回答 1

Stack Overflow用户

发布于 2021-08-19 17:42:06

我已经通过将$user->tokens()->delete();添加到我的AuthController@logout中解决了这个问题。

代码语言:javascript
复制
 <?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class AuthController extends Controller
{
  public function logout(User $user){

          $user->tokens()->delete();

          return [
              'message' => 'Logged out'
          ];
      }
 }

用户模型看起来像这样。

代码语言:javascript
复制
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;

    protected $fillable = [
        //some code
    ];
    protected $hidden = [
        //some code
    ];
    protected $casts = [
        //some code
    ];
}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66979272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档