2016-11-10 4 views
4

Laravel 5.3에 대한 Laravel Passport 패키지를 공식 문서 (https://laravel.com/docs/5.3/passport#introduction)에 설명 된대로 설정했습니다.Laravel Passport "auth : api"미들웨어는 "웹, 인증"미들웨어의 역할을합니다.

모바일 응용 프로그램에서 API를 사용하려고하므로 암호 부여 토큰을 구현하려고합니다. 나는 예상대로 그냥 내 사용자 중 하나에 대한 액세스 토큰새로 고침 토큰을 반환 작품 암호 부여 클라이언트 및 토큰 요청 프로세스 ...

$response = $http->post('http://my-app.com/oauth/token', [ 
    'form_params' => [ 
     'grant_type' => 'password', 
     'client_id' => 'client-id', 
     'client_secret' => 'client-secret', 
     'username' => '[email protected]', 
     'password' => 'my-password', 
     'scope' => '', 
    ], 
]); 

을 ... 만든 . 한편으로

,

php artisan route:list 

목록 올바른 API/사용자 URI를위한 미들웨어 : API, 인증 : API를

및 API 가드 드라이버가 제대로 설정에서 여권로 설정 /auth.php. 요약하면 설치 프로세스의 모든 단계가 완료되었습니다 (https://laravel.com/docs/5.3/passport#installation). api.php의

기본 내용은 : 나는 http://my-app.com/api/user에 액세스 할 때 그것이 '웹'미들웨어가 아닌 'API'를 사용하여 요청을 인증하는 것 때문에

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

문제는 온다 ... 액세스 할 때 사용자가 로그인하지 않은 경우/login (로그인 양식)으로 리디렉션됩니다.이 경우 .../home에 있습니다.

도움이 될만한 정보가 있습니다. 미리 감사드립니다.

+0

당신은 [여기] (https://laravel.com/docs/5.3/passport#consuming-your-api-with-javascript)까지 X-CSRF-TOKEN을 사용하여 자신의 API 엔드 포인트를 활용하고 있습니까? – dargue3

+0

@ dargue3. 네, \ Laravel \ Passport \ Http \ Middleware \ CreateFreshApiToken :: class도 포함 시켰습니다. Kernel.php에서 아무 것도 변경되지 않았습니다. 하지만 실제로 JavaScript를 사용하여 자체 API를 사용하고 싶지 않습니다. 그것은 외부 모바일 응용 프로그램에서 그것을 소비하는 것입니다, 그리고 그 암호 부여 방법 메서드가 필요 ... 나는 여전히 문제가 있습니다. 다른 생각? – andcl

답변

6

해결! 그냥 레코드에 대한 해결책 :

HTTP 헤더가 잘못된 http://my-app.com/api/user에게 요청을 보내고 있습니다.

Type: Authorization - Content: Bearer: $accessToken 

... 그리고 올바른 방법이었다 : 나는 발송했다

Type: Authorization - Content: Bearer $accessToken (without colon) 

내가 그것을 오타가 될 수 있다고 생각하지 ... 어쨌든, 오류가 리디렉션 때문에 감지하기 쉽지 않았다 로그인 폼에 처음부터 나를 오도했다. 나는 그것이 정말로 이상한 행동이라고 생각합니다 ...

+1

나는 오래된 게시물 인 것을 알고 있었지만 여기에 권한 부여를 추가하여 언급 할 가치가있다. 여전히 작동하지 않는다. 헤더에 Accept : "application/json"을 하나 더 추가해야한다. 이것은 Laravel 5.5 최신 버전입니다. –