2017-02-28 23 views
1

このエラーは、postmanをapi.phpファイルで使用したときに表示されます。定義されていないメソッドを呼び出す Database Query Builder :: withAccessToken()

ここでは、Laravel 5.4のドキュメント例を使用しています。

Route::get('/user', function (Request $request) { 
return $request->user() ; })->middleware('auth:api'); 

私はこれらの設定を持っています。 Image of postman with accept and Auth settings

HasApiTokensが関連するモデルにあるため、これらのエラーが発生するのは本当に珍しいようですが、問題は何ですか?

答えて

1

答えは奇妙なものです。私はprojectRoot/config/Auth.phpファイルを見て発見しました。

Laravelのデフォルトで設定されている「ユーザー」に使用していたモデルが、誤ったモデルフォルダとモデル名の下に設定されていました。下の画像を参照してください。 image of auth.php file line 70

認証が正常に動作するためには、70行目に示すように、モデルはユーザーまたはメインモデルのディレクトリとモデル名に変更する必要があります。このwithAccessTokenはあなたを投げることができますが、それは認証の問題でした。

+0

私は ' 'プロバイダ' を持っている=> [ 'ユーザー' => [ 'ドライバ' => '雄弁'、 'モデル' =>アプリケーション\ユーザー::クラス、 ]、 //」ユーザー '=> [ //' driver '=>' database '、 //' table '=>' users '、 //]、 ]、「まだ同じエラーが表示されます。 –

+0

あなたは長い頭痛から私を救っただけです。これは間違いなく私の問題でした。 –

2

「use HasApiTokens、Notifiable;」を追加してこれを解決しました。アプリケーション/ User.phpに

0

は私のためにそれをやった、

を追加するアプリケーション/ User.phpのユーザーモデルに直接だった「Laravel \パスポート\ HasApiTokensを使用します。」

直接デ・クラスに

"使用HasApiTokens、認証可能、Authorizable;"

<?php 

namespace App; 

use Illuminate\Auth\Authenticatable; 
use Laravel\Lumen\Auth\Authorizable; 
use Illuminate\Database\Eloquent\Model; 
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; 
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; 
use Laravel\Passport\HasApiTokens; 

class User extends Model implements AuthenticatableContract, AuthorizableContract 
{ 
    use HasApiTokens, Authenticatable, Authorizable; 

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

    /** 
    * The attributes excluded from the model's JSON form. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 
    ]; 
} 

私の場合、ルーメン5.3を使用していますが、これで問題は解決しました。

関連する問題