| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- git
- sessionStorage
- AWS
- 예매로직
- AWS Route53
- zombie-hit apartment
- ES6
- MySQL Error
- Java
- mongodb
- json
- AWS RDS
- ajax
- Bootstrap
- Kubernetes
- spread operator
- 인생이재밌다
- ssh
- topologySpreadConstraints
- html
- 영화예매
- spring
- Get
- post
- javascript
- chartjs
- node.js
- jsp
- terminationGracePeriodSeconds
- mysql
- Today
- Total
jongviet
Aug 11, 2021 - Nodejs Auth 처리 관련 본문
*8월11일
*index.js
//auth 라우터를 통해서 어느 페이지에서든지 auth 상태 확인 가능
app.get('/api/users/auth', auth, (req, res) => {
//미들웨어를 넘어 온 것은 authentication이 정상 처리된 것; 따라서 해당하는 유저 정보를 프론트로 res
res.status(200).json({
_id: req.user._id,
isAdmin: req.user.role === 0 ? false : true,
isAuth : true,
email : req.user.email,
name: req.user.name,
lastname: req.user.lastname,
role: req.user.role,
image: req.user.image
})
})
*Auth.js
const {User} = require('../models/User');
let auth = (req, res, next) => {
//인증 처리
//클라이언트 쿠키에서 토큰 get
let token = req.cookies.x_auth;
//토큰 복호화 후 유저 찾기
//유저가 존재하면 인증 ok, 유저가 없으면 인증 fail
User.findByToken(token, (err, user) => {
if(err) throw err;
if(!user) return res.json({ isAuth: false, error:true})
req.token = token; //index.js에서 데이터 쓸 수 있게 넣어줌;
req.user = user;
next(); //middldeware 이후로 넘기는 작업
})
}
module.exports = { auth };
*User.js
userSchema.statics.findByToken = function(token, cb) {
var user = this;
//token decoding
jwt.verify(token, 'secretToken', function(err, decoded) {
//유저 아이디 확인 후, 클라이언트 token과 DB token이 일치하는지 확인;
//findOne 메소드로 mongoDB에 _id와 token이 있는지 확인
user.findOne({"_id" : decoded, "token": token}, function(err, user) {
if(err) return cb(err)
cb(null, user)
})
})
}
'node, express, nestjs' 카테고리의 다른 글
| Aug 29, 2021 - DDD pattern (0) | 2021.08.29 |
|---|---|
| Aug 13, 2021 - node.js express 관련 강의 완강 with 인프런 (0) | 2021.08.13 |
| Aug 9, 2021 - nodejs 로그인 기능(bcrypt, saltRounds, cookie-parser, jsonWebToken) (0) | 2021.08.09 |
| Aug 8, 2021 - nodemon & heroku (0) | 2021.08.08 |
| Aug 7, 2021 - nodejs express setup~mongoDB~git에 연결하기 (SSH) (0) | 2021.08.07 |