[typescript] async/await를 사용한 로그인 및 인증 처리 방법

이 기술 블로그에서는 TypeScript를 사용하여 async/await를 활용하여 로그인 및 사용자 인증을 처리하는 방법에 대해 소개하겠습니다.

목차

async/await와 TypeScript 소개

async/await는 JavaScript와 TypeScript에 도입된 비동기 프로그래밍을 보다 간편하게 처리하기 위한 문법입니다. async 키워드로 함수를 선언하고, 해당 함수 내에서 await 키워드를 사용하여 비동기 작업의 완료를 기다릴 수 있습니다.

TypeScript에서 async/await를 사용하면 코드의 가독성을 높이고, 비동기 작업을 더 쉽게 다룰 수 있습니다.

로그인 프로세스 구현하기

먼저, 사용자가 제공한 아이디와 패스워드를 사용하여 로그인하는 프로세스를 구현해 보겠습니다. 아래는 TypeScript를 사용한 간단한 로그인 함수입니다.

async function login(username: string, password: string): Promise<boolean> {
  // 로그인 요청을 보내고 응답을 기다린다
  const response = await fetch('/api/login', {
    method: 'POST',
    body: JSON.stringify({ username, password }),
    headers: { 'Content-Type': 'application/json' }
  });

  // 응답을 확인하고 성공 여부를 반환한다
  const data = await response.json();
  if (data.success) {
    return true;
  } else {
    throw new Error(data.error);
  }
}

위 코드에서 async function login은 비동기 함수로, fetch를 사용하여 로그인 요청을 보내고, await를 통해 응답을 기다립니다. 응답이 성공하면 true를 반환하고, 실패하면 오류를 throw합니다.

인증 처리 구현하기

사용자를 인증하기 위해서는 로그인이 성공한 후에 인증 토큰을 받아와 저장해야 합니다. 아래는 TypeScript로 간단한 인증 처리를 구현한 예시입니다.

async function handleLogin(username: string, password: string): Promise<void> {
  try {
    const loggedIn = await login(username, password);
    if (loggedIn) {
      const token = await fetchAuthToken(username);
      sessionStorage.setItem('authToken', token);
      console.log('인증 성공');
    }
  } catch (error) {
    console.error('로그인 또는 인증 실패:', error);
  }
}

위 코드에서 handleLogin 함수는 login 함수를 호출한 후, 로그인이 성공하면 fetchAuthToken 함수로부터 인증 토큰을 받아와 sessionStorage에 저장합니다.

결론

이번 기술 블로그에서는 TypeScript를 사용하여 async/await를 활용하여 로그인 및 사용자 인증을 처리하는 방법에 대해 알아보았습니다. async/await를 사용하면 비동기 코드를 보다 명확하게 작성할 수 있으며, 가독성과 유지보수성을 높일 수 있습니다.

위에서 소개된 코드는 실제 서비스에 적용하기 위해서는 보안과 예외 처리 등을 보다 신중하게 고려해야 합니다.

참고 자료