티스토리 뷰
웹사이트의 로그인 API를 설계하고 만들 때는 일반적으로 다음과 같은 단계를 따릅니다:
API Endpoint 생성: 로그인 기능을 위한 API 엔드포인트를 생성합니다. 보통 /login 이나 /auth/login과 같은 경로를 사용합니다.
HTTP 메서드 선택: 로그인 기능에는 POST 메서드를 사용합니다. 이는 사용자의 로그인 정보(이메일과 비밀번호 등)를 서버에 전송하므로, 이 정보를 안전하게 보호하기 위해 POST 메서드를 사용합니다.
입력 데이터 검증: 사용자로부터 받은 입력 데이터(이메일, 비밀번호 등)를 검증합니다. 이메일 형식이 올바른지, 비밀번호가 충분히 안전한지 등을 확인합니다.
사용자 인증: 사용자의 이메일과 비밀번호를 데이터베이스나 다른 저장소에서 검색하여 실제 사용자 정보와 일치하는지 확인합니다.
세션 또는 토큰 생성: 사용자를 성공적으로 인증한 후에는, 사용자의 로그인 상태를 유지하기 위해 세션을 생성하거나 JWT(JSON Web Token)와 같은 토큰을 생성합니다.
응답 반환: 로그인이 성공적으로 완료되면, 클라이언트에게 HTTP 상태 코드 200과 함께 세션 또는 토큰 정보를 포함한 응답을 반환합니다. 로그인이 실패한 경우에는 적절한 오류 메시지와 함께 HTTP 상태 코드 401(Unauthorized) 또는 403(Forbidden)을 반환합니다.
코드 예제로는 다음과 같습니다:
app.post('/login', (req, res) => {
const { email, password } = req.body;
// Validate the user input
if (!isValidEmail(email) || !isValidPassword(password)) {
return res.status(400).send('Invalid input');
}
// Authenticate the user
const user = authenticateUser(email, password);
if (!user) {
return res.status(401).send('Unauthorized');
}
// Create a token
const token = createToken(user);
// Return the token
res.status(200).send({ token });
});
이 코드에서 isValidEmail, isValidPassword, authenticateUser, createToken 함수는 각각 이메일 형식 검증, 비밀번호 형식 검증, 사용자 인증, 토큰 생성을 담당합니다. 실제 사용 시에는 이러한 기능을 제공하는 라이브러리나 프레임워크를 사용하여 보안을 강화하고 코드를 간소화합니다.
또한, 비밀번호는 절대로 평문으로 저장하지 않아야 합니다. 사용자의 비밀번호는 해시 함수를 사용하여 암호화된 형태로 저장되어야 하며, 로그인 시에는 입력받은 비밀번호를 동일한 해시 함수로 암호화하고, 그 결과를 데이터베이스에 저장된 해시와 비교하여 인증을 수행합니다.
'개발' 카테고리의 다른 글
[개발]JWT 갱신 토큰 관리 방법(3)-DB 사용 (0) | 2023.07.03 |
---|---|
[개발]JWT 갱신 토큰 관리 방법 (2) - 로컬스토리지/쿠키 사용 (0) | 2023.07.03 |
[개발]JWT 갱신 토큰 관리 방법(1) (0) | 2023.07.03 |
[개발]JWT를 이용한 사용자 갱신 및 관리 방법 (0) | 2023.07.03 |
[개발]JWT(Json Web Token)을 이용한 인증(feat. NodeJS) (0) | 2023.07.03 |