Spring Security를 이용해 회원 관리나 로그인 기능을 구현할 때, 비밀번호를 평문(plain text)으로 저장하면 보안상 매우 취약합니다. 이번 글에서는 Spring Security에서 제공하는 BCryptPasswordEncoder를 사용하여 안전하게 비밀번호를 암호화하는 방법을 소개하겠습니다. 1. BCryptPasswordEncoder란?BCryptPasswordEncoder는 Spring Security에서 제공하는 비밀번호 암호화 도구로, 단방향 해싱(hashing)을 수행합니다. 한번 암호화된 비밀번호는 복호화가 불가능하며, 로그인 시에는 입력된 비밀번호를 다시 암호화하여 데이터베이스에 저장된 암호화된 비밀번호와 비교하여 인증합니다.주요 특징:단방향 암호화 방식안전한 salt 자..
Flutter의 initState 함수란?Flutter에서 initState 함수는 StatefulWidget의 상태를 초기화할 때 사용하는 메서드입니다.쉽게 말해, "앱이 처음 실행될 때 한 번만 호출되는 준비 작업 함수"라고 생각하면 됩니다.예를 들어, 데이터를 불러오거나 타이머를 설정하는 등 초기화가 필요한 작업을 initState에서 수행합니다.initState의 주요 특징딱 한 번 호출됨initState는 State 객체가 처음 생성될 때 한 번만 호출됩니다.이후 상태가 변경되어도 initState는 다시 호출되지 않습니다.초기화 작업에 적합데이터를 불러오거나 리스너를 추가하는 등 초기 설정 작업에 사용됩니다.super.initState() 호출 필요initState를 오버라이드할 때 super..
이번 팀 프로젝트는 도서관 플랫폼으로 주제를 정하고 사이트 이름은 북허브(BookHub)로 정하였습니다. 작업기간은 2024.02.13 ~ 2024.03.05 (총 15일) 소요되었습니다. 이번 프로젝트에서는 저는 부팀장역할을 맡아 사이트 전체 프론트 디자인 부분과 발표 PPT 제작 및 관리자페이지, 포인트 결제 기능부분을 맡아 개발을 진행하였습니다. 💡 프로젝트 선정 배경 환경을 생각한 도서 서비스 → 책 생산시 낭비되는 종이를 막기 위해 책 공유 기능을 넣어 자원낭비를 최소화 모임을 개설하여 서로의 의견을 주고 받을 수 있는 모임 서비스 포인트 결제 수수료, 배너광고 수익을 통한 사이트 수익창출 도서 검색, 대출/반납, 도서관 내 포인트를 이용한 베이커리, PC 사용 서비스 💡 내가 개발한 기능 메인..
💡 SQL을 추상화한 JPQL JPA : ORM(Object-Relational Mapping) 프레임워크 JPQL(Java Persistence Query Language) JPA는 SQL을 추상화한 JPQL이라는 객체 지향 쿼리 언어를 제공합니다. 따라서 테이블을 대상으로 쿼리 하는 것이 아닌 엔티티 객체를 대상으로 쿼리합니다. JPQL은 SQL을 추상화했기 때문에 특정 데이터베이스 SQL에 의존하지 않는 장점이 있습니다. JPQL은 SQL과 문법이 유사하며, SELECT, FROM, WHERE, GROUP BY, HAVING, JOIN을 지원합니다. 💡 쿼리메소드를 사용한 쿼리문 만들기 ✅ TODO 1) 전체 조회 + 정렬(내림차순) 📂 DeptRepository.java package com.ex..
💡 파라미터 방식 앞 전 예제에서는 쿼리스트링 방식으로 매개변수를 전달하였습니다. 이번에는 쿼리스트링 방식을 개선한 파라미터 방식의 매개변수 전달 방법에 대해 알아보겠습니다. 📂PathVariableController.java @Controller @RequestMapping("/exam05") public class PathVariableController { // TODO : url 테스트 파라미터 방식 : http://localhost:8000/exam05/path-variable/LeeJunHyuk // => @GetMapping("/path-variable/{웹매개변수명}") // => 웹 브라우저 주소창 사용 : url/값 // TODO : url 테스트 쿼리스트링 방식 : http://loc..