Login Logic

DATE : 2023/11/10

앞에서 공부한 식별 & 인증은 우리에게 익숙한 로그인 과정에 포함되는 개념이라 정의하였다.

그렇다는 건 로그인을 처리하는 방법은

식별 & 인증을 어떻게 조합하는 지에 따라 달라질 수 있다는 뜻이다!

[1] 식별 -> 인증

먼저 살펴볼 케이스는 식별이 이루어진 후 인증을 거치는 사례이다.

식별이라 함은 많은 데이터 중 특정 데이터만 찾아내는 과정이라 정의했다.

이 말을 SQL로 적어보자면 다음과 같을 것이다.

SELECT * From user WHERE username = 'yunsoo'

사용자 정보가 들어있는 user table에서 username이 yunsoo인 사람의 정보만 가져오라는 의미로

이때 username은 다른 사람과 자신을 구별할 수 있는 고유 값이어야 한다.

자! 이렇게 해서 yunsoo의 정보를 가져왔다고 해보자.

여기까지 진행되었다는 건, 수많은 사람의 데이터 중 yunsoo의 정보를 찾아내기만 한 것이다.

이제 username을 yunsoo라고 입력한 사람이 실제 당사자가 맞는 지 인증을 해야 한다.

위에서 실행한 query 결과를 $result 라고 할 때

$res = mysqli_fetch_array($result)

if($res['password'] == $USER_PASSWORD) {
...
}

이와 같이 username이 yunsoo인 record의 비밀번호와 사용자가 입력한 비밀번호가

일치하는 지 비교함으로써 로그인 승인 여부를 결정할 수 있다!

[2] 식별 & 인증

이번에 살펴볼 케이스는 식별과 인증을 동시에 진행하는 사례이다.

[1]에서는 사용자가 입력한 username이 존재하는 지 먼저 확인하고

password를 비교하는 과정을 실행했다.

이와 달리 [2]에서는 동일한 과정을 한 번에 처리한다. SQL로 표현하자면 다음과 같다.

SELECT * FROM user WHERE username='$USER_ID' AND password = '$PASSWORD'

WHERE 문을 보면 사용자가 입력한 username & password를 동시에 만족하는

record를 가져오라고 명령하고 있다.

위의 query가 실행되는 과정을 생각해보면

(1) username이 일치하는 회원 정보를 찾아(= 식별)

(2) 해당 회원 정보 중 비밀번호를 사용자가 입력한 비밀번호와 일치하는 지까지(= 인증)

확인한 후 결과를 반환한다.

(만약 username과 일치하는 정보를 찾았다고 해도 password가 일치하지 않으면 로그인을 할 수 없다.)

간단하게 2가지 방법으로 설계된 Login logic을 살펴보았다.

위에서 본 내용에 더불어 password를 HASH 처리하거나 개행이 어디에 들어가는 지에 따라서도

조금씩 다른 스타일의 로그인 과정을 만들 수 있다고 한다!!

각 케이스에 대해 구현해보는 건 ASSIGNMENT에서 확인해보기! 😄

Last updated