2016-09-14 5 views
3

현재 코드베이스를 RESTful 패턴으로 이식하고 있으므로 단일 API에서 모바일 앱과 웹 애플리케이션을 실행할 수 있습니다.Laravel 5.3 자체 API 사용

나는 laravel 5.3이 이제 Laravel Passport를 구현한다는 것을 알고 있지만 사용자가 인증 토큰/api 토큰을 얻은 다음 자신의 API를 사용하는 방법을 알고 있습니다. 내 $의 middleWareGroups 배열에, 내 API 노선에, 내 HTTP/kernal.php 내가 추가 한에서

Route::group(['middleware' => 'auth:api'], function() { 
    Route::get('classes', '[email protected]'); 
    Route::get('classes/{id}', '[email protected]'); 
    Route::post('classes', '[email protected]'); 
    Route::put('classes', '[email protected]'); 
    Route::delete('classes', '[email protected]'); 
}); 

,

\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class 

를 다음과 같습니다.

내 사용자의 인증 키를 어떻게 생성합니까? 로그인 할 때 어떻게 해당 사용자에게 토큰을 추가합니까?

+2

이 시계 [laracast] (https : // laracasts.co.kr/series/whats-new-in-laravel-5-3/episodes/13) 무료이며 자신의 API를 사용하는 예를 포함하여 모든 것을 설명합니다. – tam5

+0

조심해. 내 프런트 엔드 (vue.js가 아님)에서 API 요청을 보내는 방법. 즉 어디에서 토큰이나 쿠키를 가져 옵니까? – Udders

+1

프론트 엔드에서 무엇을 얻었습니까? – tam5

답변

-1

다른 프론트 엔드 프레임 워크와 함께 자신의 API를 사용하려면 각 AJAX 요청에 요청 헤더를 추가해야합니다. X-CSRF-TOKEN 헤더를 해당 페이지의 CSRF 토큰과 동일하게 설정해야합니다.

예는 : 자바 스크립트

$.ajax({ 
    url: $url, 
    headers:{'X-CSRF-TOKEN': Laravel.csrfToken}, 
    type: $type, 
    dataType: $dataType, 
    async: $async, 
    data: $data, 
}); 
0

으로 나는 그들의 API가 자신의 API를 소비하는 동안 "인증되지"응답 있기 때문에 여기에 올 미래의 사용자를 위해이 응답하고있다.

OP 질문 : "내 사용자의 인증 키를 어떻게 생성합니까? 로그인 할 때 어떻게 해당 사용자에게 토큰을 추가합니까?"

답변 : 당신이 CreateFreshAPIToken 미들웨어를 통해 자신의 API를 소비하는 경우, 당신은 토큰 특별한 인증 키를 생성/할 필요가 없습니다. 인증은 CreateFreshApiToken 미들웨어를 추가 할 때 응답에 추가되는 "laravel_token"쿠키를 통해 수행됩니다.

이 내장 토큰은이 쿠키가 전송 된 요청을받을 때 여권으로 해독됩니다. 여전히 자신의 API 소모에 대한 문서의 모든 단계를 수행 한 후 "인증되지 않은"메시지가 사람들의

:

전체 개념 가 작동하지 않습니다를 Laravel 미들웨어를 분명히 \ 쿠키 \ 경우 미들웨어 \ EncryptCookies가 경로 그룹에 대해 정의되지 않았습니다. 이 정보 은 문서에서 제공하는이 아닙니다. 그래도 완전히 이해가됩니다. 쿠키가 암호화되지 않은 경우 쿠키를 해독 할 수 없으므로 Passport에서 제공 한 TokenGuard에 항상 DecryptException이 있습니다.

이 미들웨어는 Kernel.php이 뭔가를 찾고, 모든 요청에 ​​대해 구성된 기본입니다 : 그렇지 않은 경우

class Kernel extends HttpKernel 
{ 
    /** 
    * The application's global HTTP middleware stack. 
    * 
    * These middleware are run during every request to your application. 
    * 
    * @var array 
    */ 
    protected $middleware = [ 
     \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, 
     \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, 
     \App\Http\Middleware\TrimStrings::class, 
     \App\Http\Middleware\EncryptCookies::class, 
     \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, 
     \Illuminate\Session\Middleware\StartSession::class, 
    ]; 
} 

, 당신은 그것을 추가해야합니다.

희망은 눈을 뜨고 몇 시간 후에 여기에 착륙하는 사람들을 도울 수 있기를 바랍니다.