JWT(JSON Web Token) 란?

JWT 란? JWT(JSON Web Token)는 공개 표준인 RFC7519로, JSON 객체 형태로 당사자 간 정보를 안전하게 전송하기 위한 소혀의 자체 포함 형식으로 정의됩니다. JWT는 두 당사자간에 전송할 클레임을 나타내는 URL에 안전(url-safe)한 압축 수단입니다. JWT의 클레임(claim; 페이로드의 한 조각)은 JWS(JSON Web Signature) 구조의 페이로드(payload; 정보) 또는 JWE(JSON Web Encryption) 구조의 JSON 개체로 더보기…

PHP: 이미지 섬네일(Thumbnail) 만들기 (Imagick 이용)

Imagick이 PHP 서버에 설치된 경우, 아래 코드를 이용하여 이미지 섬네일을 만들 수 있습니다. 저는 이용하는 호스팅 서버에 해당 프로그램이 설치가 되어 있어 별도 작업을 하지 않고 바로 사용하지만, 설치가 안된 경우에는 링크를 참고하여 설치하세요. 다음 함수를 추가합니다. /** * * Generate Thumbnail using Imagick class * * @param string $img 더보기…

PHP: 날짜 시간 관련 함수(date, time, strtotime, mktime)

시간 포맷 사용 – date() 함수 두 번째 파라미터는 nullable이며, 특정 타임스탬프를 지정하면 해당 타임스탬프의 날짜를 반환하고, 아니라면 time() 현재 시각을 반환합니다. // set the default timezone to use. Available since PHP 5.1 date_default_timezone_set(‘UTC’); // Prints something like: Monday echo date(“l”); // Prints something like: Monday 8th of August 2005 더보기…

PHP, Mysql: 좋아요 기능 만들기

예전에 PHP로 만들었던 간단한 CRUD 게시판에 ‘좋아요 기능’을 추가해보도록 하겠습니다. ‘좋아요 기능’은 빈 하트(♡)를 누르면 하트가 채워지면서(♥) 숫자 카운트가 올라가는 기능입니다. PHP: 데이터베이스 접근 기초(SELECT, INSERT, UPDATE, DELETE) 여기서는 로그인 기능이 구현되지 않았으므로 아이피 주소(IP Address)를 기준으로 중복 좋아요를 방지하도록 하겠습니다. 만약 로그인이 구현되어 있다면 로그인한 유저를 기준으로 중복 좋아요를 더보기…

PHP, Mysql: SELECT JOIN 문 실행시 중복된 이름의 열(컬럼) 결과를 가져오는 방법

Q. 내 데이터베이스에 두 개의 테이블이 있습니다. 컬럼이 있는 NEWS 테이블: id – 뉴스 ID user – 작성자의 사용자 ID 컬럼이 있는 USERS 테이블 : id -사용자 ID 이것에 대한 SQL을 실행하려고 합니다. SELECT * FROM news JOIN users ON news.user = user.id PHP에서 결과를 얻을 때 컬럼 이름을 $row[‘컬럼이름’]으로 가져오는 경우, 동일한 더보기…

PHP: mysql_fetch_array() 에서 while() 대신에 foreach()를 사용하는 방법

Q. foreach와 함께 작동하도록 다음 코드를 어떻게 변환하는지 알고 싶습니다. $query_select = “SELECT * FROM shouts ORDER BY id DESC LIMIT 8;”; $result_select = mysql_query($query_select) or die(mysql_error()); while($row = mysql_fetch_array($result_select)) { $ename = stripslashes($row[‘name’]); $eemail = stripcslashes($row[’email’]); $epost = stripslashes($row[‘post’]); $eid = $row[‘id’]; echo $eid . ‘<br/>’; echo $ename . 더보기…

PHP: JSON 스트링을 객체 또는 배열로 변환, explode, str_replace, 대소문자 변경방법

1) JSON을 배열로 변환 객체(stdClass)로 변환하는 방법 $array_data = json_decode($str, false); // 또는 $array_data = json_decode($str); 배열로 변환하는 방법 $array_data = json_decode($str, true);   2) explode 다른 언어의 String.split과 기능이 비슷합니다. 스트링의 경계기호(delimiter) 문자를 기준으로 배열을 생성합니다. $date = “2020-08-25”; // explode(delimiter, string) $exploded = explode(‘-‘, $date); echo $exploded[0]; // 더보기…

스프링 부트(Spring Boot): SPA에서 사용할 수 있는 OAuth2 소셜 로그인 (구글, 페이스북, 깃허브)

원문 바로가기1 바로가기2 원문에서는 프론트엔드 부분을 리액트로 설명하고 있는데, 저는 리액트를 사용하지 않아서 다음 글에서 Vue.js 로 대체해서 올리고, 이 글은 백엔드만 다루겠습니다. 일반 서버 사이드 렌더링에서 구글 로그인 연동하는 방법은 아래를 참조하세요. 스프링 부트(Spring Boot): 구글 로그인 연동 (스프링 부트 스타터의 oauth2-client) 이용 + 네이버   안녕하세요, Spring Boot 더보기…

스프링 부트(Spring Boot): JPA 엔티티에 자동으로 생성 날짜, 변경 날짜 추가하기

JPA 엔티티에 생성 날짜(createdDate), 변경 날짜(modifiedDate) 필드를 자동으로 추가하는 방법입니다.   1) BaseTimeEntity 추상 클래스 작성 package com.example.awsboard.domain; import lombok.Getter; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import javax.persistence.EntityListeners; import javax.persistence.MappedSuperclass; import java.time.LocalDateTime; @Getter @MappedSuperclass @EntityListeners(AuditingEntityListener.class) public abstract class BaseTimeEntity { @CreatedDate private LocalDateTime createdDate; @LastModifiedDate private LocalDateTime modifiedDate; }   더보기…

스프링 부트(Spring Boot): JPA + Thymeleaf로 페이지네이션(페이징, 페이지 내비게이션) 구현

스프링 부트 + JPA + Thymeleaf를 이용해 게시판에 페이지네이션(페이징, 페이지 내비게이션) 기능을 추가해 보겠습니다.   0) 엔티티 클래스, 레퍼지토리 인터페이스 작성 Spring Boot: Spring JPA + H2 데이터베이스 기초 + 단위 테스트   1) 엔티티에 대한 서비스 클래스 작성 package com.example.awsboard.service.posts; import com.example.awsboard.domain.posts.Posts; import com.example.awsboard.domain.posts.PostsRepository; import com.example.awsboard.web.dto.PostsListResponseDTO; import com.example.awsboard.web.dto.PostsResponseDTO; import 더보기…