-
글쓴이글
-
2022년 2월 16일 00:29 #27404
SEUNGHAK LEE참가자안녕하세요.
비밀번호 암호화를 하려고, 참고할 만한 글들을 찾아 보았는데 연결이 안되고 너무 어렵습니다. 쉽게 설명된 곳을 알려주세요.
감사합니다.
2022년 2월 16일 10:05 #27429
codingapple키 마스터const bcrypt = require('bcrypt');
app.post('/가입', function (req, res) {
bcrypt.hash(req.body.유저가보낸패스워드, 8).then(function(암호화된패스워드) {
암호화된패스워드와 유저아이디를 db에 저장해주세요~
})})
bcrypt 이런거 쓰기 쉽습니다
2022년 2월 21일 20:58 #27863
SEUNGHAK LEE참가자bcrypt 비밀번호 암호화 강의 한번만 해 주시면 안될까요? 너무 어려워서, 다른 곳의 설명은 선생님이 강의 하신 것과 달라서 연결을 해서 이해하기가 너무 어렵습니다. 부탁드립니다.
2022년 2월 22일 10:51 #27898
codingapple키 마스터npm install bcrypt 하시고
const bcrypt = require('bcrypt');
const saltRounds = 10;
상단에 추가하고유저가 서버로 아이디, 비번을 보내서 회원가입 post 요청시에
bcrypt.hash(요청.body.pw, saltRounds, function(err, hash) {
db.collection('login').insertOne({ id : 요청.body.id, pw : hash }, function(){})
});이런코드 실행해주면 될듯요
salt 는 얼마나 함호화할지 이런것 설정하는 부분이고 hash는 암호화완료된 비번입니다
2022년 2월 26일 14:59 #28290
SEUNGHAK LEE참가자자주 시간 뺏어서 죄송합니다.
말씀하신 대로 해서 mongodb에 암호화돤 pw를 저장하는 것까지 성공했는데, login이 실패해서 ('/list)가 아닌 ('/ ')로 redirect 됩니다.
app.get('/login', function (요청, 응답) {
응답.render('login.ejs')
})
app.post('/register', (요청, 응답) =>{
bcrypt.hash(요청.body.pw, saltRounds, function (err, hash) {
db.collection('login').insertOne({ id: 요청.body.id, pw: hash}, function (에러, 결과) {
응답.redirect('/login')
})
})
});
app.post('/login', passport.authenticate('local', {
failureRedirect: '/'
}), function (요청, 응답) {
응답.redirect('/list')
});
passport.use(new LocalStrategy({
usernameField: 'id',
passwordField: 'pw',
session: true,
passReqToCallback: false,
}, function (입력한아이디, 입력한비번, done) {
console.log(입력한아이디, 입력한비번);
db.collection('login').findOne({ id: 입력한아이디 }, function (에러, 결과) {
if (에러) return done(에러)
if (!결과) return done(null, false, { message: '존재하지않는 아이디요' })
bcrypt.hash(입력한비번, saltRounds, function (에러, hash) {
if (hash == 결과.pw) {
return done(null, 결과)
} else {
return done(null, false, { message: 'Wrong Password'})
}
})
})
}));
passport.serializeUser(function (user, done) {
done(null, user.id)
});
passport.deserializeUser(function (아이디, done) {
db.collection('login').findOne({id: 아이디}, function (에러, 결과) {
done(null, 결과)
})
});어느 부문이 잘못되었는지 알려 주세요. 감사합니다. 이승학 올림.
2022년 2월 26일 20:54 #28304
codingapple키 마스터/login 으로 post요청하는 코드에
failureRedirect: '/'
이게 로그인 실패시 /경로로 이동하라는 뜻이라 그렇습니다 여기를 /list로 바꾸거나 그럽시다
2022년 2월 26일 23:41 #28312
SEUNGHAK LEE참가자login 이 fail 하지 않게 하고 싶습니다.
왜 fail 되는지 모르겠습니다. 입력한비번을 hash 한 것과 결과.pw를 비교하는 과정에서 실수 한 것 같은데 가르쳐 주세요.
2022년 2월 27일 11:51 #28329
codingapple키 마스터db에 있는 암호화된거랑 유저가 입력한거랑 비교할 땐
bcrypt.compare(입력한비번, db에있던암호화된비번, function (에러, 결과) {
if (res == true) {
return done(null, 결과)
} else {
return done(null, false, { message: '비번틀렸어요' })
}}
이러면 됩니다
2022년 2월 27일 17:10 #28342
SEUNGHAK LEE참가자성공했습니다. 그런데
bcrypt.compare(입력한비번, 결과.pw, function (에러, isMatch) {
if (isMatch) {
return done(null, 결과)
} else {
return done(null, false, { message: 'Wrong Password'})
}
})이렇게 해야 됩니다. 감사합니다.
-
글쓴이글
- 답변은 로그인 후 가능합니다.