인증에 대한 나의 첫 번째 npm 패키지

소개



나는 약 1,5년 동안 Express와 Mongodb에서 코딩을 해왔고 지금까지 내가 구축한 모든 프로젝트에서 인증을 구현하기 위해 동일한 코드를 계속해서 작성해야 했습니다. 반복은 프로그래머인 우리가 싫어하는 것입니다. 그래서 인증 흐름과 DRY 원칙을 구현하기 위해 나만의 인증 패키지를 만들기로 했습니다.

구현



이 npm 패키지는 Express 및 Mongodb와 함께 사용하도록 구축되었습니다. 인증은 jwt를 기반으로 합니다. 또한 sendgrid는 재설정 토큰 링크가 포함된 이메일을 보내기 위한 재설정 암호 기능을 구현하는 데 사용되었습니다.

용법



이 패키지는 다음 기능을 제공합니다.
  • 가입
  • 로그인
  • 로그아웃
  • 비밀번호 업데이트
  • 비밀번호를 잊어버렸습니다

  • 이 패키지를 얼마나 쉽게 사용할 수 있는지 봅시다.
    먼저 이 명령으로 express-auth-flow 패키지를 설치해야 합니다.

    npm install express-auth-flow
    or
    yarn add express-auth-flow
    


    그런 다음 선택한 이름으로 사용자 모델을 만들고 아래와 같이 최소한 이러한 필드(이름은 정확히 동일해야 함)를 만들어야 합니다.
  • 이메일
  • 사용자 이름
  • 비밀번호

  • 다음은 mongoose를 사용한 간단한 예입니다(모든 필드의 유효성을 검사하는 것이 좋습니다).

    //Model file userModel.js
    
    const mongoose = require("mongoose");
    
    const { Schema } = mongoose;
    
    const userSchema = new Schema({
        email: String,
        username: String,
        password: String
    });
    
    module.exports = mongoose.model("User", userSchema);
    


    이제 라우터 파일에서 위에서 만든 사용자 모델인 express-auth-flow 패키지가 필요하고 아래와 같이 경로를 만들어야 합니다. 패키지가 인식하려면 경로와 이름이 정확히 동일해야 합니다. 비밀번호 찾기 기능에 대한 이메일은 sendgrid를 통해 전송되며 무료 계정을 생성한 다음 API 키를 생성해야 합니다. 예가 아래에 나와 있습니다.

    //Router file userRoutes.js
    
    const express = require("express');
    
    const User = require("The path to your user model");
    
    const auth = require("express-auth-flow");
    
    const router = express.Router();
    
    //Only for forgot password functionality
    const options = {
        apiKey: "your sendgrid api key",
        from: "your email that you verified on sendgrid",
        text: "The raw message",
        html: "The html formatted message"
    };
    
    router.post("/signup", auth("User").signup);
    router.post("/login", auth("User").login);
    router.post("/logout", auth("User").logout);
    router.post("/update-password", auth("User").updatePassword);
    router.post("/forgot-password", auth("User, options").forgotPassword);
    router.post("/reset-password/:token", auth("User").resetPassword);
    
    module.exports = router;
    


    마지막으로 모든 라우터에서 예상되는 입력을 분석할 수 있습니다.

    /가입하기



    가입 기능은 다음 입력을 예상합니다.
    이메일, 사용자 이름, 비밀번호, ConfirmPassword

    /로그인



    로그인 기능은 다음 입력을 예상합니다.
    이메일 비밀번호

    /로그 아웃



    입력 없음

    /update비밀번호:



    이메일, 비밀번호, newPassword, ConfirmNewPassword

    /비밀번호를 잊으 셨나요



    이메일

    /reset-password/:토큰



    비밀번호, 확인비밀번호


    알아채다

    비밀번호 분실 기능은 다음과 같이 작동합니다.
    먼저 사용자는/forgot-password 경로로 이동하여
    이메일, 비밀번호, newPassword, ConfirmNewPassword 입력. 그런 다음 10분 동안 유효한 재설정 토큰 링크가 포함된 이메일이 제공된 이메일로 전송되며 사용자가 이 링크로 리디렉션할 때 새 비밀번호를 저장하기 위해 비밀번호와 ConfirmPassword를 제공해야 합니다.

    가까운 장래에 이 패키지를 사용하는 방법에 대한 비디오 자습서를 발표할 예정입니다.

    시간 내주셔서 감사합니다. 언제든지 피드백을 작성해 주세요.
    이 이메일로 저에게 연락하십시오: [email protected]

    좋은 웹페이지 즐겨찾기