[FastRoute] 로그인 토큰 인증 (2)
2020. 1. 7. 22:22ㆍFastRoute (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;
}


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 |