[FastRoute] 로그인 토큰 인증 (2)

2020. 1. 7. 22:22FastRoute (PHP)

1. 인증용 API 라우팅 설정 (index.php)

$r->addRoute('POST', '/test', ['bigCategory','mainController','test']);
$r->addRoute('GET', '/test2', ['bigCategory','mainController','test2']);

 

 

 

2. PHP 글로벌 변수를 이용하여 토큰 유효성 검증 코드 작성 (mainController.php)

case "test2":
	$jwt = $_SERVER['HTTP_X_ACCESS_TOKEN'];
                
	if (!isValidHeader($jwt, JWT_SECRET_KEY)) {
		$res->isSuccess = FALSE;
		$res->code = 201;
		$res->message = "유효하지 않은 토큰입니다";
		echo json_encode($res, JSON_NUMERIC_CHECK);
		return;
	}

	$userInfo = getDataByJWToken($jwt, JWT_SECRET_KEY);
	$userId = $userInfo->id;
                
	http_response_code(200);
	$res->result = $userId;
	$res->code = 100;
	$res->message = "테스트 성공";

	echo json_encode($res, JSON_NUMERIC_CHECK);

	break;

 

 

 

3. 토큰에 담긴 정보 추출 (function.php)

function isValidHeader($jwt, $key){

	try{
		$data = getDataByJWToken($jwt, $key);

		return isValidJWToken($data->id, $data->password);
	}catch(Exception $e){
		return false;
	}

}

 

 

 

4. 토큰에 담긴 정보를 이용하여 회원 존재 유무 확인 (pdo.php)

function isValidJWToken($id, $password) {
	$pdo = pdoSqlConnect();
	$query = "SELECT * FROM User WHERE id = ? AND pass = ?;";

	$st = $pdo->prepare($query);
	$st->execute([$id, $password]);
	$st->setFetchMode(PDO::FETCH_ASSOC);
	$res = $st->fetchAll();

	$st=null;$pdo = null;

	if($res != NULL) return true;
	else return false;
}

유효성 검증 과정
Postman (토큰 검증)

728x90

'FastRoute (PHP)' 카테고리의 다른 글

[FastRoute] PDO 사용법  (0) 2020.01.07
[FastRoute] PHP 트랜잭션  (0) 2020.01.07
[FastRoute] 로그인 토큰 인증 (1)  (0) 2020.01.07
[FastRoute] 파일 분리  (0) 2020.01.07