>웹 프론트엔드 >JS 튜토리얼 >NodeJS를 이용한 인증 시스템

NodeJS를 이용한 인증 시스템

Susan Sarandon
Susan Sarandon원래의
2025-01-10 10:54:42130검색

Authentication System Using NodeJS

소개

인증은 사용자의 신원을 식별하고 애플리케이션에서 제공하는 리소스에 대한 액세스 권한을 부여하는 프로세스입니다. 백엔드 개발에서는
인증은 사용자에게 특정 리소스에 대한 액세스 권한을 부여하거나 제한하는 데 중요한 역할을 합니다.

인증은 두 가지 방법으로 수행할 수 있습니다. -

  • 토큰 기반 인증.

  • 세션 기반 인증.

토큰 기반 인증에 대해 알아보겠습니다.

토큰 기반 인증

토큰 기반 인증은 보안을 손상시키지 않으면서 사용자에게 강력한 경험을 제공하기 위해 널리 사용되는 보안 메커니즘입니다.

토큰 기반 인증에서는 사용자가 로그인하면 서버에 사용자에 대한 고유 토큰이 생성됩니다. 서버가 토큰을 생성한 후 클라이언트로 전송되어 클라이언트 시스템에 로컬로 저장됩니다. 클라이언트가 요청할 때마다 이 토큰은 각 요청과 함께 사용자의 신원을 확인합니다.

인증 프로세스

  1. 요청- 사용자가 애플리케이션에 로그인하면 브라우저가 사용자 자격 증명을 사용하여 서버에 요청했습니다.

  2. 검증 - 요청이 서버에 오면 사용자를 검증하고 토큰이라는 비밀 키를 생성하여 HTTP를 통해 사용자에게 보냅니다.
    일반적으로 토큰은 헤더, 페이로드, 서명으로 구성된 JWT [jsonWebTokens] 개방형 표준으로 전송됩니다.

  3. 토큰 확인 - 사용자가 요청할 때마다 신원을 확인하는 데 도움이 되므로 사용자가 토큰 비밀 코드를 받으면 클라이언트의 브라우저에 저장됩니다. 이 토큰은 수명이 15~60분으로 짧으며 이 토큰은 액세스 토큰 코드라고도 합니다. 사용자가 액세스 토큰 코드를 사용할 수 없는 경우 시스템에 3~4일 동안 유지되는 새로 고침 토큰 코드를 요청합니다.

  4. 응답 - 검증이 완료되면 토큰이 사용자에게 특정 콘텐츠에 대한 액세스 권한을 부여하거나 제한합니다.


예를 들어 등록 및 로그인 방법을 사용하여 토큰 기반 인증을 구현하겠습니다.

먼저 사용자를 위한 등록 모듈 기능을 만듭니다.-

1단계: - 사용자 등록
등록은 사용자로부터 데이터를 수집하여 계정을 생성합니다

// FIRSTLY, WE'LL SELECT THE REGISTER FORM
const form = document.querySelector(".register");

// ADDING EVENT LISTENER TO FORM TO COLLECT THE VALUES FROM USER
form.addEventListener("submit", (e) => {

  e.preventDefault();
  const username = e.target.username.value;
  const email = e.target.email.value;
  const password = e.target.password.value;

});

2단계: - 비밀번호 암호화

사용자 데이터를 데이터베이스에 저장하기 전에 먼저 보안을 위해 비밀번호를 암호화한 후 데이터베이스에 저장해야 합니다.

비밀번호 암호화에는 npm package bcrypt를 사용합니다.

먼저 터미널에 다음을 작성하여 패키지를 설치해야 합니다. -
npm bcrypt 설치

이제 비밀번호를 이렇게 해싱하겠습니다

// FIRSTLY, WE'LL SELECT THE REGISTER FORM
const form = document.querySelector(".register");

// ADDING EVENT LISTENER TO FORM TO COLLECT THE VALUES FROM USER
form.addEventListener("submit", (e) => {

  e.preventDefault();
  const username = e.target.username.value;
  const email = e.target.email.value;
  const password = e.target.password.value;

});

bcrypt.hash는 솔트 라운드로 비밀번호를 해싱하는 기능입니다. 두 명의 사용자가 동일한 비밀번호를 사용할 때마다 다른 해시 키를 생성합니다.

로그인 기능

모든 사용자가 로그인을 시도하면 데이터베이스에서 해시된 비밀번호를 검색하여 로그인 시 사용자가 입력한 비밀번호와 비교합니다

//  IMPORTING BCRYPT MODULE
const bcrypt=require('bcrypt');


// ASSIGNING USERS PASSWORD 
const plainPassword=userPassword

// ENCRYPTING PASSWORD
// BASIC SYNTAX
// bcrypt.hash(plainTextPassword,salt_rounds)

const hashedPassword=bcrypt.hash(plainPassword,10);

if(!hashedPassword){
    throw new Error('Enable to generate password')
}

// NOW WE WILL SAVE USER DETAILS AND PASSWORD TO DATABASE
console.log('Hashed Password is : ',hashedPassword)

위 내용은 NodeJS를 이용한 인증 시스템의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.