본문 바로가기
Framework/Laravel Framework

[Laravel] http request시 custom header 설정 하기

by 원동호 2020. 12. 1.
반응형

API Http Request시 보안을 위해 middleware를 사용해 헤더 설정을 해보았다.

Route::group(['prefix'=>'api/v1', 'middleware' => [ApiToken::class]], function(){
    Route::GET('test', [tetsController::class,'test']);
});

prefix는 api 요청시 url 앞에 붙는 접두어 이며, 예를 들면 api call시 아래와 같이 요청 해야하며

request시 api/v1이 붙지 않는다면 404 error가 발생할 것이다. 

http://localhost/api/v1/test

 

artisan 명령어로 원하는 middleware 이름을 입력한 후 실행 하면 미들웨어가 생성된다.

php artisan make:middleware middleware_name

 

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Response;

class ApiToken
{
    //URL 요청 시 미들웨어를 거쳐 처리 한 후 결과 값을 넘겨준다.
    public function handle(Request $request, Closure $next)
    {	
    	/*
        	HTTP 요청시 TEST KEY값이 설정 되어 있지 않은 경우, 
            400 code와 에러메시지를 return 해준다.
        */
        if(!isset($_SERVER['HTTP_TEST'])){  
            return Response::json(array('code'=>400,'message'=>'Please set custom header'));  
        }  
  		
        /*
        	설정한 TEST KEY값의 Value값과 요청한 Value값이 일치하지 않은 경우,
            406 code와 에러 메시지를 return 해준다.
        */
        if($_SERVER['HTTP_MEDICONEX'] != 'TEST KEY 값의 VALUE값'){  
            return Response::json(array('code'=>406,'message'=>'wrong custom header'));  
        }  
        
        //header key값과 value 값이 일치할 경우 정상적으로 다음 함수가 실행된다.
        return $next($request);     
    }
}

 

도움이 되셨다면 하트 및 댓글 부탁드립니다♥

반응형

댓글