2014-12-24 5 views
4

Laravel에 간단한 API가 있습니다. 경로 파일과 같이이다 :서버에서 헤더를 사용할 수 없습니까?

Route::filter('auth_token', function() 
{ 
    $auth_token = Request::header('Authorization'); 

    if(!AuthToken::where('auth_token', '=', $auth_token)->first()){ 
     return Response::json([], 401); 
    } 
}); 

모든 자원이 auth_token 필터 전에 통과해야합니다

<?php 

Route::resource('airports', 'AirportController'); 

Route::resource('flights', 'FlightController'); 

Route::resource('reservations', 'ReservationController'); 

Route::get('auth', '[email protected]'); 
Route::post('auth', '[email protected]'); 
Route::delete('auth', '[email protected]'); 

필터의 파일 필터과 같이 추가 사용자 정의가 있습니다. 이제는 내 로컬 컴퓨터에서 잘 작동하지만 서버에서 직접 시도 할 때 유효한 토큰을 전달하더라도 모든 것이 허가되지 않습니다. 내 사용자 정의 필터에서 dd($auth_token)으로 생각한 문제는 null을 반환한다는 것인데, 이는 내 서버가 어떤 이유로 헤더를 수락하지 않음을 의미합니다.

내 htaccess로 파일과 같이 보입니다 : 내 응용 프로그램을 테스트 이죠 REST 클라이언트를 사용하고

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 

    # Redirect Trailing Slashes... 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 
    Header set Access-Control-Allow-Origin "*" 
    Header set Access-Control-Allow-Headers "*" 
</IfModule> 

. 시스템에는 '[email protected]'이라는 이메일과 'admin12345'비밀번호가있는 사용자가 한 명 있습니다. POST 이러한 세부 사항을 /auth 경로에 전달하고 액세스 토큰을 부여한 다음 시스템에서 다른 리소스를 가져 오는 데 사용할 수 있습니다.

신청서는 here입니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

1

경로 순서가 문제 일 수 있습니다. 이런 식으로 뒤집어서 작동하는지 확인하십시오 ...

Route::get('auth', '[email protected]'); 
Route::post('auth', '[email protected]'); 
Route::delete('auth', '[email protected]'); 

Route::resource('airports', 'AirportController'); 
Route::resource('flights', 'FlightController'); 
Route::resource('reservations', 'ReservationController'); 
관련 문제