2017-02-28 12 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에서 기본값으로 설정된 'user'에 사용 된 모델이 잘못된 모델 폴더 및 모델 이름 아래에 설정되었습니다. 아래 이미지를 참조하십시오. 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을 사용하고 있지만 문제가 해결되었습니다.