[React & NodeJS]공부#2
날짜 : 21.06.18
참고 강의
[Node.js]
1. Auth 기능 만들기
- [index.js]에 auth route 생성
app.get('/api/users/auth', auth, (req, res) => {
});
- [middleware]-[auth.js] 생성
const { User } = require("../models/User");
let auth = (req, res, next) => {
//인증 처리를 하는 곳
//client cookie에서 token 가져오기
let token = req.cookies.x_auth;
//토큰 복호화 후 유저 검색
User.findByToken(token, (err, user) => {
if (err) throw err;
if (!user) return res.json({ isAuth: false, error: true });
req.token = token;
req.user = user;
next();
});
};
module.exports = { auth };
- [models]-[User.js]에 findByToken 생성
userSchema.statics.findByToken = function (token, cb) {
var user = this;
jwt.verify(token, 'secretToken', function (err, decoded) {
//유저 아이디를 이용해서 유저를 찾은 다음에
//클라이언트에서 가져온 token과 DB에 보관된 토큰이 일치하는지 확인
user.findOne({ "_id": decoded, "token": token }, function (err, user) {
if (err) return cb(err);
cb(null, user)
})
})
}
- [index.js] auth에 미들웨어 작성
const { auth } = require('./middleware/auth');
app.get('/api/users/auth', auth, (req, 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,
});
});
2. 로그아웃
- [index.js]에 logout router 생성
app.get('/api/users/logout', auth, (req, res) => {
// console.log('req.user', req.user)
User.findOneAndUpdate({ _id: req.user._id },
{ token: "" }
, (err, user) => {
if (err) return res.json({ success: false, err });
return res.status(200).send({
success: true
})
})
})
[React.js]
1. React 설치
npx create-react-app .
Full Code
Walang Github
Walang Notion
Author And Source
이 문제에 관하여([React & NodeJS]공부#2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ganzi410/Walang공부시작2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)