[유튜브 클론코딩] 6.1 Passport로 Local Authentication(로컬 인증) 하기 (1)

2021. 3. 10. 22:11Projects/유튜브 클론코딩

728x90
반응형

6.1 Passport로 Local Authentication(로컬 인증) 하기 (1)

1. models > User.js 파일 만들기 & import (init.js)

User라는 model을 만들 것이다.

User는 이름, 이메일, 페이스북 아이디, 깃허브 아이디, 아바타 URL 등을 가질 것이다.

 

i

mport mongoose from "mongoose";

const UserSchema = new mongoose.Schema({

    name: String,

    email: String,

    avatarUrl : String,

    facebookId : Number,

    githubId: Number

});

const model = mongoose.model("User",UserSchema);

export default model;

↑ User.js

avatarUrl은 예전에 Video model에서 fileUrl처럼 똑같이 처리해줄 것이다.

아무튼 다 만들었으면 init.js에 import 해준다.

 

import "./db";

import app from "./app";

import dotenv from "dotenv";

dotenv.config();

import "./models/Video";

import "./models/Comment";

import "./models/User";

const PORT = process.env.PORT || 4000;

const handleListening = () => console.log(`✅Listening on: http://localhost:${PORT}`);

app.listen(PORT, handleListening);

↑ init.js

 

2. passport-local-mongoose (install -> import -> plugin )

📝passport-local-mongoose란?

passport를 사용한 사용자 이름 및 비밀번호 로그인을 단순화하는 Mongoose 플러그인 이다.

 

설치하기

아직 User.js에 passport는 개입되지 않았다. 우리는 passport-local-mongoose를 쓸 것이다.

mongoose도 쓰고 mongoDB도 쓰고 있는 우리에게 딱 적합한 것이다.

설치 : npm install passport-local-mongoose

 

import 하기

import passportLocalMongoose from "passport-local-mongoose";

User.js에 다음과 같이 import 해준다.

 

plugin 적용하기

passportLocalMongoose는 설정 객체가 필요하다.

passportLocalMongoose에게 어떤 field를 username으로 할 것인지를 알려주어야 한다.

 

import mongoose from "mongoose";

import passportLocalMongoose from "passport-local-mongoose";

const UserSchema = new mongoose.Schema({

    name: String,

    email: String,

    avatarUrl : String,

    facebookId : Number,

    githubId: Number

});

UserSchema.plugin(passportLocalMongoose, { usernameField: 'email'});

const model = mongoose.Model("User",UserSchema);

export default model;

↑ User.js

 

3. passport & passport-local

📝passport-local이란

username과 password를 쓰는 로그인 방식을 말한다. (strategy)

 

설치 : npm install passport passport-local

 

지금은 passport-local을 설치할 거고 나중에 passport-facebook passport-github 같은 것도 설치해서 쓸 것이다.

 

4. passport.js 만들기

import passport from "passport";

import User from "./models/User";

passport.use(User.createStrategy());

↑ passport.js

이봐 passport야 strategy(방식)를 하나 사용해 - strategy 라는 건 로그인하는 방식

지금은 username이랑 password를 쓰는 방식을 사용할려고 한다

 

공식 사이트를 가보면 원래는 new LocalStrategy라고 해서 저렇게 긴 코드를 작성해야 하는데 저렇게 긴 코드가 createStrategy라는 한 줄로 표현이 되는 것이다.

(createStrategy()는 이미 구성된 passport-local의 LocalStrategy를 생성한다)

728x90
반응형