상세 컨텐츠

본문 제목

로그인 로직 구현

웹개발

by ser-ser 2024. 11. 2. 14:14

본문

더보기

1. 초기 설정 및 데이터베이스 생성

2. 식별 및 인증 동시 로그인

3. 식별 및 인증 분리 로그인

4. 식별 / 인증 동시 로그인 (Hash)

5. 식별 / 인증 분리 로그인 (Hash)

6. bcrypt를 활용한 로그인

 

1. 초기 설정 및 데이터베이스 생성

로그인을 하는 다양한 방법에 대해 알아보았으니 이제 직접 만들어 보도록 하죠.

 

초기 설정값

test_login이라는 테이블을 데이터베이스에 생성하였습니다.

 

이 테이블에는 하나의 열은 평문 비밀번호를 저장하고,
다른 열은 해시값으로 변환된 비밀번호를 저장하도록 구성했습니다.

 

2. 식별 및 인증 동시 로그인

세션을 사용해 로그인 유지 기능을 구현하였으며, id와 password를 동시에 식별하도록 만들었습니다.

 

코드를 실행해 보니 Dolby 계정이 정상적으로 출력되는 것을 확인할 수 있었습니다.

 

3. 식별 및 인증 분리 로그인

ID와 비밀번호를 각각 따로 확인하는 방식으로 로그인 코드를 작성했습니다.

 

비밀번호 검증 시 "fail" 메시지가 출력되는데,
이는 해시값 비교 로직이 없었기 때문입니다.
해당 코드를 보완하여 해시값을 비교해 참/거짓 여부를 판단하는 기능을 추가하도록 하죠.

 

4. 식별 / 인증 동시 로그인 (Hash)

 

Dolby1 계정을 다음과 같이 생성했습니다:

INSERT INTO users (id, password) VALUES ('Dolby1', SHA2('123', 256));

단방향 해시 알고리즘 SHA-256을 사용해서 계정을 만들었고 이것을 비교 분석 + 아이디와 비밀번호를 같이 체크하려면 다음과 같은 코드를 입력해야 합니다.

$sql = "SELECT * FROM test_login WHERE id='$id' AND password=SHA2('$password', 256)";

이 코드를 통해 해시값 비교가 이루어졌으며, 로그인이 정상적으로 작동하는 것을 확인할 수 있습니다.

이런 식으로 간단하게 작업해 주고 출력이 잘되는지 확인해봅시다.

 

해시값을 비교 분석해서 참/ 거짓을 알아맞추는 코드를 적용시키니 로그인이 일치한 것을 확인할 수 있고,

 

이제 식별 / 인증 분리 로그인을 사용해 아이디와 비밀번호를 분리해서 로그인을 해보도록 합시다.

 

5. 식별 / 인증 분리 로그인 (Hash)

SHA-256 해시값을 비교분석하여 참 / 거짓을 구분하게 만들었습니다.

이제 코드가 제대로 작동하는지 확인하러 가봅시다.

 

네 아주 잘 작동하네요

 

6. bcrypt를 활용한 로그인

bcrypt를 사용하여 로그인을 구현해 보았습니다. SHA-256은 phpMyAdmin에서 해시화를 쉽게 수행할 수 있었지만, bcrypt는 PHP 코드로 직접 구현해야 했습니다.
이를 위해 간단한 회원가입 페이지를 작성해 사용자가 입력한 비밀번호를 bcrypt로 해시화하여 저장하도록 설정했습니다.

mySQL에서는 bcrypt 플러그인을 설치해 사용할 수 있지만,
phpMyAdmin에서는 불가능하므로 PHP 코드를 통해 구현하였습니다.

 

이전 코드에서 SHA-256 해시로 저장된 비밀번호를 처리하기 위해 추가적인 로직이 필요했습니다 예를 들어,
SHA-256해시로 검증한 후 bcrypt으로 재해싱하여 업데이트하는 과정 등이 있었습니다.

이 코드에서는 모든 비밀번호가 bcrypt로 해싱되어 있다고 가정하므로,
이러한 호환성 로직이 필요 없어집니다.
따라서 코드가 더 간결해지고 이해하기 쉬워진 걸 확인할 수 있죠.
최종적으로 작성된 코드는 정상적으로 작동하였고,
로그인 및 인증 과정이 성공적으로 완료되었습니다.

 

 

'웹개발' 카테고리의 다른 글

게시판 구현하기  (0) 2024.11.12
JWT 실습  (0) 2024.11.05
회원가입 후 로그인 호환  (1) 2024.10.29
회원가입 페이지 개설  (0) 2024.10.29
로그인 페이지 (보완)  (0) 2024.10.20

관련글 더보기