무료
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
salt에 대해
안녕하세요, 강의를 보면서 학습하고 있습니다. 좋은 강의 만들어 주셔서 감사하다고 먼저 말씀드리고 싶습니다. 제가 알고 있는 salt는 database에 따로 저장을 해서 comparePassword 시에 그 salt값을 이용해서 암호화를 진행하는 것인데, 영상에서는 salt값이 어디에도 저장되어 있지 않은데도 compare가 가능하던데, 어떻게 작동하는 건지 알 수 있을까요?
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
M0 클러스터는 한 계정당 하나밖에 생성을 못하는건가요?
전에 몽고디비를 사용한 적 이 있어서, 클러스터가 하나 생성되있는 상태인데, Create 클러스터를 눌렀을때 M10 부터 시작하더라구요. 혹시 M0 클러스터는 계정당 하나만 생성이 가능한건가요?
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
react-router-dom v6 써서 component 에 hoc 적용하는법 찾으시는 분들
App.js 에서 react-router-dom v6 버전에 맞게 문법을 Switch 대신 Routes 로 바꾸는 부분과 component 대신 element 로 바꾸시고 꼼수(?)로 Auth로 감싼 컴포넌트를 새로 정의해서 넣으시면 작동은 됩니다..
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
auth 분기 해준 뒤 504오류
auth 분기 해준 뒤 504 Time out 오류가 나는데 어떤 이유인지 모르겠습니다... 오타가 있나 확인해보았는데 오타는 없는거 같습니다.. 어떤 문제인지... 해결 방법 부탁드립니다 ㅠㅡㅠ
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
User.js 에서 this의 의미
User.js 에서 this 키워드를 쓰시던데, 여기서 this가 가리키는 것이 궁금합니다. 제가 이해한 바로는 this는 데이터베이스 자체를 의미하는 것인데 맞나요? 그리고 comparePassword 메소드를 굳이 User.js 파일에 생성하는 이유가 무엇인가요?
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
npm intall ~ --save
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. --save는 무슨의미인가요?
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
이메일 오류
https://github.com/myeongwon2/first 깃헙입니다 app.post('/login', (req, res) =>{ //요청된 이메일을 데이터베이스에서 있는지 찾는다. User.findOne({ email: req.body.email }, (err, user) => { if(!user){ return res.json({ loginSuccess: false, message: "제공된 이메일에 해당하는 유저가 없습니다." }) } //요청된 이메일이 데이터베이스에 있다면 비밀번호가 맞는 비밀번호 인지 확인 user.comparePassword(req.body.password, (err, isMatch) =>{ if(!isMatch) return res.json({ loginSuccess: false, message: "비밀번호가 틀렸습니다."}) //비밀번호 까지 맞다면 토근을 생성하기. user.generateToken((err, user)=>{ if(err) return res.status(400).send(err) //토큰을 저장한다. 어디에? 쿠키, 로컬스토리지 res.cookie("x_auth", user.token) .status(200) .json({ loginSuccess: true, userId:user._id}) }) }) }) }) userSchema.methods.comparePassword = function(plainPassword, cb){ //plainPassword 1234567 암호화된 비밀번호 ~ bcrypt.compare(plainPassword, this.password, function(err, isMatch){ if(err) return cb(err), cb(null, isMatch) }) } userSchema.methods.generateToken = function(cb){ var user = this; //jsonwebtoken을 이용해서 토큰을 생성 var token = jwt.sign(user._id, 'secretToken') //user._id + 'secretToken' = token //-> //'secretToken' -> user._id user.token = token user.save(function(err, user){ if(err) return cb(err) cb(null, user) }) } 위가 index.js인데 이메일부터 false가 나오는데 뭐가 틀린건가여 아래는 User.js입니다
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
Router node v.6 바뀐 부분
이렇게 적으면 v6에서 작동합니다. 앞에 분들이 여럿 글을 적어 주셨지만 정리된 게 없는 것 같아서 이렇게 올립니다. 공식문서에 나와있지만 영어가 어려우신 분들이나 처음 공부하시는 분들은 이거 참고 하시면 될 겁니다. 그리고 Link부분은 아직 안 나왔는데 적혀있어서, 오류떠서 주석 처리 했습니다. ```js import { BrowserRouter, Route, Routes, //Link } from "react-router-dom"; import LandingPage from './components/views/LandingPage/LandingPage' import LoginPage from './components/views/LoginPage/LoginPage' import RegisterPage from './components/views/RegisterPage/RegisterPage' function App() { return ( <BrowserRouter> <Routes> <Route exact path="/" element = {<LandingPage/>}/> <Route exact path="/login" element = {<LoginPage/>}/> <Route exact path="/register" element = {<RegisterPage/>}/> </Routes> </BrowserRouter> ); }
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
재시작 오류
실행은 문제없는데 수정이 저렇게 뜨고 강의처럼 안넘어갑니다,, 인터넷 찾아봐도 잘모르겠습니다 ㅠㅠ
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
const user = new User (req.body) 부분 질문합니다!
server/index.js 의 app.post('/api/users/register', (req,res) => { const user = new User (req.body) 이 부분을, 'req.body를 User모델에 넣은 것'이라고 설명해주셨는데, User에 { ?? : req.body } 라는 새로운 객체가 생성된다고 이해하면 될까요? user : User { ?? : req.body } 그럼 이 ?? 부분은 뭐가 들어가는지 알 수 있을까요? 해당코드 바로 밑에 console.log(user) 라고 작성해봤는데 콘솔에 뜨질 않아서 질문합니다. 터미널 콘솔에 안뜨는 이유는 뭘까요? (강의 보고 코드 따라 치면서 console.log를 확인하려 할때, 콘솔에 찍히지 않는 경우가 있습니다. 그저 단순오류일까요?) 유익한 강의 제공해주셔서 감사합니다 :)
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
.env 설정을 할 때 dotenv 라이브러리 사용질문
저는 config를 따로 만들지 않고 dotenv 라이브러리를 썻는데요. 이런식으로 작성해도 배포를 할 때 문제가 없을까요..?
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
로그아웃이 안됩니다.
안녕하세요. 안선생님! 지난번에 props에 관한 질문을 드렸었던 학생입니다! 지난번 주신 답변으로 해결을 했고 이제 로그아웃을 하려고 하는데 계속 오류가 납니다... 음 사실 오류가 아닌가? 라는 생각도 해보는데 콘솔창에 로그아웃을하면 로그인 유저 이렇게 로그인 잘되었고 토큰이 생성 되면서 유저 id가 생성됩니다. 선생님의 보일러 플레이트 깃허브를 참조 했지만 똑 같이 적어도 alert 부분에서 로그아웃 오류가 발생합니다. alert를 지우고 콘솔에 data를 찍어보면 { isAuth : false , error : true} 같은 방식의 문장이 나오는데 어찌보면 로그인 유저에서 auth가 false가 되었으니 로그아웃이 잘된건가? 라는 생각을 하게 되는데... 네트워크 부분을 보면 logout 부분이 찍히는데 200 초록불이 들어와있어서 ... 오! 드디어 된건가 했지만 결과적으로 보면 history push 부분에서 로그인 페이지로 이동하질 않아서 고민입니다... 오타로 인한 오류는 아닌것 같습니다.. 혹시몰라서 제 깃허브 주소를 남겨놓겠습니다.. https://github.com/madmanforces/COIN-TRACKER 이부분 때문에 인증부분까지 나아가지 못한채 3일을... 붇고있습니다.. ㅎㅎ... 토큰 방식이 아닌 세션 방식으로 바꿔보려고도 해봤는데 쉽지가 않네요... 도와주세요...
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
mysql과는 다른가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 지원하고 싶은 회사가 mysql을 사용하는데 혹시 몽고디비를 사용하는 이유가 따로 있나요?
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
LandingPage.js의 로그아웃 부분에 props
안녕하세요. 저는 타입스크립트를 연습하며 앱을 만들던중 로그인을 구현해보고싶어서 존 안님 강좌를 보게되었습니다. 어.. 제가 아직 초보라 미숙해서 그런것 같습니다만.. 랜딩페이지의 로그아웃 부분에 props.history.push 부분에 props는 어디에서 받아오는 것인가요? 랜딩페이지는 그저 제일앞단이라 받아오는 history가 없지 않나요.,,? 자꾸 에러가 props를 타입으로 정의 해달라는 에러가 나오는거 같아서 음... 어떻게 해야하나 궁금해서 여쭤봅니다!
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
token 질문
안녕하세요, 강의 잘보고 있습니다. 이해하기가 애매한 부분이 있어 글 올립니다. 구글링해봐도 다 똑같은 글들 밖에 안보여서... 좀 멍청한 질문 같긴하지만 token을 왜사용 하나요? token을 사용한 server <-> web 프로세스는 잘 알겠는데 server에서 생성된 token을 로컬이나 쿠키에 저장하게 되면 이게 보안이랑 무슨 연간이 있는지 모르겠습니다. (시크릿키 사용해서)서버에서 생성된 token을 jwt사이트에서 decoded하니 토큰 정보가 다 나오던데 ... - 토큰이 보안이랑 어떤 관련이 있나요? - id나 email 쿠키나 로컬에 저장해서 사용해도 될것 같은데 왜 굳이 메모리 할당도 큰 토큰을 사용하나요? (노출정도는 똑같은 것 같습니다.) 아니면 쿠키에 저장하는 토큰을 잘못 생성 한걸까요?
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
오류가 났는데 아무리 비교해도 어디가 잘못된지 모르겠어요ㅠㅠ
const express = require('express') const app = express() const port = 5000 const bodyParser = require('body-parser'); const { User } = require("./models/User"); app.use(bodyParser.urlencoded({extended:true})); app.use(bodyParser.json()); const mongoose = require('mongoose') mongoose.connect('mongodb+srv://seri:<password>@cluster0.9zzt4.mongodb.net/myFirstDatabase?retryWrites=true&w=majority',{ useNewUrlParser:true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify:false }).then(() => console.log('MongoDB Connected...')) .catch(err => console.log(err)) app.get('/', (req, res) => res.send('Hello World!')) app.post('/register', (req, res) => { const user = new User(req.body) user.save((err.userInfo) => { if(err) return res.json({success: false, err}) return res.status(200).json({ success:true }) }) }) app.listen(port, () => console.log(`Example app listening on port ${port}`))
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
userSchema.statics , userSchema.methods
userSchema뒤 userSchema.methods / userSchema.statics 부분의 기능과 각각 어떤 차이가 있는건지 궁금합니다!
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
router 질문
기본 구조가 <Router><div><Routes><Route> 인가요? 참조 가이드 기준 수정 외엔 별다른 설명이 없어서요 그리고 버전 차이가 있어서 오류가 많이 나서 검색을 해보니react-router-dom이 버전 6로 업그레이드되면서, Switch를 더이상 지원을 안하게 되었고 Switch -> routes / component -> element 라고 합니다. [공식문서 참조](https://reactrouter.com/docs/en/v6/upgrading/v5)
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
정상적으로 로그인 후 isAdmin이 true로 변하지 않네요 - 두번째 질문
안녕하세요 훌륭한 강의 너무나 잘 들었습니다. 다만 마지막 # 34 인증 체크 (2) 강의를 수강 후 질문이 있어 남깁니다 이전 질문 중 에 " 정상적으로 로그인 후 isAdmin이 true로 변하지 않네요 " 라는 질문이 있었는데 저 또한 isAdmin 부분이 true가 되지 않아 문의드립니다 role 역할을 1로 설정해야되는 부분은 이해했습니다 하지만 강의의 3:26에서 나오는 것과같이 role : 1 로 설정되고 lastname 까지 등록된 user정보를 만드는 방법에 대해 문의드립니다 우선 제가 임시방편으로 기존 RegisterPage 에서 user를 생성시 "이름,이메일,비밀번호,비밀번호확인" 이렇게 4가지를 설정하는 부분에서 role을 따로 추가해서 1로 설정하긴했는데 혹시 선생님께서는 어떻게 만드신건지 궁금하여 질문드립니다 * 이렇게 좋은 강의 꼼꼼하게 잘 만들어주셔서 감사합니다! *
- 미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
eslint 설정 문제
34강 코딩하다 보니 auth.js 에서 익명함수는 export default 할 수 없다는 메시지가 eslint 뜹니다.react 사용시 적합한 린터 설정이 따로 있을까요?