인증은 사용자의 신원을 식별하고 애플리케이션에서 제공하는 리소스에 대한 액세스 권한을 부여하는 프로세스입니다. 백엔드 개발에서는
인증은 사용자에게 특정 리소스에 대한 액세스 권한을 부여하거나 제한하는 데 중요한 역할을 합니다.
인증은 두 가지 방법으로 수행할 수 있습니다. -
토큰 기반 인증.
세션 기반 인증.
토큰 기반 인증에 대해 알아보겠습니다.
토큰 기반 인증은 보안을 손상시키지 않으면서 사용자에게 강력한 경험을 제공하기 위해 널리 사용되는 보안 메커니즘입니다.
토큰 기반 인증에서는 사용자가 로그인하면 서버에 사용자에 대한 고유 토큰이 생성됩니다. 서버가 토큰을 생성한 후 클라이언트로 전송되어 클라이언트 시스템에 로컬로 저장됩니다. 클라이언트가 요청할 때마다 이 토큰은 각 요청과 함께 사용자의 신원을 확인합니다.
요청- 사용자가 애플리케이션에 로그인하면 브라우저가 사용자 자격 증명을 사용하여 서버에 요청했습니다.
검증 - 요청이 서버에 오면 사용자를 검증하고 토큰이라는 비밀 키를 생성하여 HTTP를 통해 사용자에게 보냅니다.
일반적으로 토큰은 헤더, 페이로드, 서명으로 구성된 JWT [jsonWebTokens] 개방형 표준으로 전송됩니다.
토큰 확인 - 사용자가 요청할 때마다 신원을 확인하는 데 도움이 되므로 사용자가 토큰 비밀 코드를 받으면 클라이언트의 브라우저에 저장됩니다. 이 토큰은 수명이 15~60분으로 짧으며 이 토큰은 액세스 토큰 코드라고도 합니다. 사용자가 액세스 토큰 코드를 사용할 수 없는 경우 시스템에 3~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 중국어 웹사이트의 기타 관련 기사를 참조하세요!