Passport
Authentication is the process of verifying
who a particular user is.
we typically authenticate with a username/password combo, but we can also use security questions, facial recognition etc.
인증이란 누군가의 '신원'을 확인하는 것.
Authorization is verifying what a specific user has access to.
Generally, we authorize after a user has been authenticated. " Now that we know who you are, here is what you are allowed to do and NOT allowed to.
권한이란 사용자가 수행해도 되는 행동을 의미.
ex. 접근가능대상, 편집/삭제 가능 대상, 웹사이트의 어느 부분에 접근 가능한지
권한은 인증을 받고 나서야 비로소 일어남.
ex)
{
username: 'jincheol'
password: 'ilovecoding123' (x)
}
sol) Hashing
암호 해쉬 함수 / 암호 안전 해쉬 함수
npm i bcrypt
입력된 패스워드와 해쉬 값의 비교
솔트 생성 해쉬 구현 하면서 동시에 간략하게 구현 가능.
<register.ejs>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Register</title>
</head>
<body>
<h1>Sign Up</h1>
<form action="">
<div>
<label for="username">Enter Username: </label>
<input
type="text"
name="username"
id="username"
placeholder="username"
/>
</div>
<div>
<label for="password">Enter Password: </label>
<input
type="password"
name="password"
id="password"
placeholder="password"
/>
</div>
<button>Sign Up</button>
</form>
</body>
</html>
<index.js>
const express = reuqire('express');
const app = express();
const User = require('./models/user');
app.set('view engine', 'ejs');
app.set('views', 'views');
app.get('/register', (req,res)=> {
res.render('/register')
})
app.get('/secret', (req,res)=> {
res.send('this is secret!')
})
app.listen(3000, () => {
console.log("SERVING YOUR APP!")
})
유저 등록 후 해당 유저정보와 동일한 유저네임/패스워드 입력시 유저등록시 세션에 저장된 정보와 일치시 /secret 라우터로 이동가능.
req.session.destroy( );
requireLogin
Mongoose와 모델이 직접 해쉬 암호 생성하게 만들기
<user.js>
<index.js>