2014-11-04 4 views
0

저는 Laravel에 API를 구축 중이며 HTTP 기본 인증을 사용하려고합니다. 이메일/비밀번호 조합이 [email protected]:testpass 인 사용자를 생성했습니다. 이것이이다 그러나 때문에, 나는이 경로에 auth.basic 경로 필터를 부착하면 https://[email protected]:[email protected]/users/2Laravel HTTP 기본 인증이 작동하지 않습니다.

, 나는 성공적으로 인증하고 Auth 클래스를 통해 인증 된 사용자의 정보를 액세스 할 수 있습니다 : I 인증이 필요합니다 다음 URL에서 엔드 포인트에 접근하고있어 무엇 Auth::onceBasic()의 결과 것은 여기에 항상 내가 머무는을 보내고있다하더라도 사용자 이름/암호 조합 불구하고, 승인되지 않은 반환에 상관없이

// Our own auth filter to use onceBasic and return a consistent API response 
Route::filter('basic.once', function() { 
    $result = Auth::onceBasic(); 

    if ($result->getStatusCode() === 401) { 
     // Unauthorized, return our own response 
     return Response::json([ 
      'message' => 'Bad credentials' 
     ], Config::get('status.error.unauthorized')); 
    } 

    return $result; 
}); 

: API 나는 비 저장 HTTP 기본 인증을 사용하려면, 그래서 난 내 자신의 필터를 썼다 같은. 심지어 내 필터에서 Auth::onceBasic()Auth::basic()으로 변경하더라도 인증되지 않은 상태로 반환됩니다.

내 필터가 Laravel과 함께 제공되는 auth.basic 필터와 기본적으로 동일하므로 일관성있는 API 출력을 생성하는 데 더 많은 코드가 있지만 디버깅을 시작할 위치조차 알지 못합니다.

+0

사용자 모델을 게시 할 수 있습니까? 또한 db 해시에 암호가 있습니까? – lukasgeiter

+0

해결 했습니까? .httaccess를 변경하려고 했습니까? – chemitaxis

답변

1

PHP FastCGI를 사용하고 있습니까? 공식 Laravel 문서에서

: 당신이 PHP FastCGI를를 사용하는 경우

FastCGI를에


https://laravel.com/docs/5.3/authentication#http-basic-authentication

A 노트, HTTP 기본 인증 상자 밖으로 제대로 작동하지 않을 수 있습니다 . 다음 줄은 당신의 .htaccess 파일에 추가해야합니다

RewriteCond %{HTTP:Authorization} ^(.+)$ 
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

나는 이런 식으로 나 자신을 해결하기 위해 관리.

관련 문제