Larravel 컨트롤러에서 Header Authorization 키를 가져오시겠습니까?
API를 만들기 위한 컨트롤러에서 헤더 승인 키를 가져오려고 합니다.바이올린 연주자로부터 요청을 받고 있습니다.
$headers = apache_request_headers();
그리고 $header에는 배열이 포함되어 있습니다.
Array
(
[User-Agent] => Fiddler
[Host] => localhost:8000
[Content-Length] => 102
[Authorization] => TestKey
)
Authorization을 가져오려고 이와 같이 시도하는 경우, 이는 던지는 오류입니다.
$header['Authorization]
오류:
Undefined index: Authorization
허가를 받기 위해 여러 가지 방법을 시도했지만 아무 것도 작동하지 않았습니다.이것을 가져올 방법이 있습니까?
요청에서 헤더를 가져오려면 Request 클래스를 사용해야 합니다.
public function yourControllerFunction(\Illuminate\Http\Request $request)
{
$header = $request->header('Authorization');
// do some stuff
}
https://laravel.com/api/5.5/Illuminate/Http/Request.html#method_header 참조
오래된 주제이긴 하지만 누군가에게 유용할 수도...
새로운 Laravel 버전에서는 호출을 통해 베어러 Authorization 토큰을 직접 얻을 수 있습니다.Illuminate\Http\Request의bearerToken()방법:
Auth::viaRequest('costom-token', function (Request $request) {
$token = $request->bearerToken();
// ...
});
또는 컨트롤러에서 직접 다음을(를) 사용할 수 있습니다.
public function index(Request $request) {
Log::info($request->bearerToken());
// ...
}
"JWT" 또는 "sanctum"과 같은 특정 패키지를 사용하는 경우 자체 미들웨어를 사용하여 사용자 정보를 검색할 수 있습니다.
또한 Laravel은 다음과 같은 권한 키를 얻을 수 있는 많은 방법을 제공합니다.
$request->bearerToken();'베어러' 단어 없이 토큰만 받으면 결과는 다음과 같습니다.44|9rJp2TWvTTpWy535S1Rq2DF0AEmYbEotwydkYCZ3.$request->header('Authorization');완전한 키를 손에 쥐다시피Bearer 44|9rJp2TWvTTpWy535S1Rq2DF0AEmYbEotwydkYCZ3
추신: 사용하실 수 있습니다.request() 사용하지 않고 바로 가기$request변수
작곡가를 통해 jwt(JSON Web Token Authentication for Laravel & Lumen) http://jwt-auth.com 를 설치해 볼 수 있습니다.
그리고 헤더 요청에 토큰 키가 존재하는지 확인하는 미들웨어를 만듭니다.
jwt를 설치한 후 미들웨어는 다음과 같을 수 있습니다.
<?php
namespace App\Http\Middleware;
use Closure;
use JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
use Tymon\JWTAuth\Exceptions\TokenExpiredException;
use Tymon\JWTAuth\Exceptions\TokenInvalidException;
class VerifyJWTToken
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
try {
$user = JWTAuth::toUser($request->header('token'));
} catch (JWTException $e) {
if ($e instanceof TokenExpiredException) {
return response()->json([
'error' => 'token_expired',
'code' => $e->getStatusCode()
], $e->getStatusCode());
}
else if($e instanceof TokenInvalidException){
return response()->json([
'error' => "token_invalid",
'code' => $e->getStatusCode()
], $e->getStatusCode());
}
else {
return response()->json([
'error' => 'Token is required',
'code' => $e->getStatusCode(),
], $e->getStatusCode());
}
}
return $next($request);
}
}
예를 들어, 토큰을 헤더 키에 사용했지만, 원하는 대로 이름을 지정할 수 있습니다.
그럼 아무 컨트롤러에서나 이걸 사용할 수 있겠군요
$_SERVER로 파일이나 컨트롤러에서 헤더를 가져오는 간단한 방법이 있습니다.
print_r($_SERVER); // check your header here
그러면 간단히 헤더를 얻을 수 있습니다.
$AuthToken = $_SERVER['HTTP_AUTHORIZATION'];
언급URL : https://stackoverflow.com/questions/37001665/get-header-authorization-key-in-laravel-controller
'programing' 카테고리의 다른 글
| "object file"에서 "object"란 무엇이며, 왜 이렇게 불리나요? (0) | 2023.09.19 |
|---|---|
| WordPress Theme: 독립 실행형 테마 need index.php 파일 ERROR (0) | 2023.09.19 |
| 이상적인 버퍼 크기는 얼마입니까? (0) | 2023.09.19 |
| 자바스크립트 맵 함수가 정의되지 않은 상태로 반환되는 이유는 무엇입니까? (0) | 2023.09.19 |
| 텍스트 노드에 대한 CSS 셀렉터가 있습니까? (0) | 2023.09.19 |