代码之家  ›  专栏  ›  技术社区  ›  Christian

使用个人访问令牌访问laravel api时出现内部服务器错误[500]

  •  -1
  • Christian  · 技术社区  · 7 年前

    (这不是一份 Laravel 5.3 Personal access token 500

    我在apache上使用laravel/passport进行了设置。我遵循了中的安装程序 https://laravel.com/docs/5.7/passport#installation 我还在那里创建了一个混合应用程序。一个部件使用标准的laravel,还有一个复杂的部件使用vue+vuex。我的身份验证工作如下:我使用laravel标准web身份验证,在用户登录时,我创建一个新的个人访问令牌。

    创建vue组件后,它将使用以下方法成功检索令牌:

    window.axios.get(`/oauth/personal-access-tokens`)
    

    当我查询api时,我会移交令牌:

    axios.defaults.headers.common['Authorization'] = 'Bearer '+context.rootState.user.token;
    axios.defaults.headers.common['Accept'] = 'application/json';
    window.axios.get(`/api/userfavs`)...
    

    完整的标题

    Accept  application/json
    Accept-Encoding gzip, deflate
    Accept-Language en-US,en;q=0.5
    Authorization   Bearer 43c7fbc2b96d67d36749ad6…cf6692eb7d21dbc15d4196c1212bd
    Cache-Control   max-age=0
    Connection  keep-alive
    Cookie  XSRF-TOKEN=eyJpdiI6IkNrNSswZER…jOTA5MTA3ZjMxOTk4NWEifQ%3D%3D
    Host    localhost
    Referer http://localhost/vegbed/1/edit
    User-Agent  Mozilla/5.0 (X11; Ubuntu; Linu…) Gecko/20100101 Firefox/64.0
    X-CSRF-TOKEN    tbVdEArmqXzdEGGwwd2eYFnL0gwKs4dW01aSrKz1
    X-Requested-With    XMLHttpRequest
    X-XSRF-TOKEN    eyJpdiI6IkNr
    

    路线:

    Route::get('userfavs/','Api\UserFavController@index')->middleware('auth:api');
    

    答复是:

    SQLSTATE[42S22]:未找到列:“where子句”(SQL:select*from)中的1054未知列“api_标记” users 哪里 api_token =43c7fbc2b96d67d36749ad6df2278e4e69d755909dfc2de3400cf6692eb7d21dbc15d4196c1212bd限值1)

    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
    
        'api' => [
            'driver' => 'passport',
            'provider' => 'users',
        ],
    ],
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Hidayat Riva'i    7 年前

    如果您在config.php中的guard中写入令牌,laravel将使用api_令牌,, 如果在api保护中使用令牌,则表中需要api_令牌字段。

    'guards' => [
        'web' => [
            'driver'   => 'session',
            'provider' => 'users',
        ],
    
        'api' => [
            'driver'   => 'token',
            'provider' => 'users',
        ],
      ]
    

    'guards' => [
        'web' => [
            'driver'   => 'session',
            'provider' => 'users',
        ],
    
        'api' => [
            'driver'   => 'passport',
            'provider' => 'users',
        ],
      ]
    

    当您将其更改为passport后仍然出现相同错误时, 首先使用artisan清除你的应用程序。清除缓存、配置和视图 ..