8 글 보임 - 1 에서 8 까지 (총 8 중에서)
-
글쓴이글
-
2022년 11월 14일 16:19 #53947
themapa참가자로그인에 실패했을 경우 알람을 띄우는 기능을 만들려고 $('.btn').click(function(){ $.ajax({ method : 'POST', url : '/', data : {id : String($('.id').val()), pw : String($('.pw').val())}, }).done((결과) => { window.location.replace('/login_success') }).fail((xhr,code,err) => { window.location.replace('/') }) }) passport.authenticate('local')에 passport.authenticate('local', (err, user, info) => { console.log(info.message) ... }) 로 변경해서 message를 가져오는 지 확인하고 로그인 시도를 하니 잘 되던 로그인이 안되고 crbug/1173575, non-JS module files deprecated 발생합니다. passport.authenticate에 인자를 추가할 때 따로 설정해야하는 것이 있는건가요?? 유튜브로 음악들으면서 코딩해서 인터넷 문제는 아닌데 passport를 수정해야하나요??
2022년 11월 14일 19:39 #53969
codingapple키 마스터console.log(info.message) 넣을 때만 이상해지는거면 info에 .message가 없거나 그런경우같고 아니면 컴퓨터 껐다켭시다
2022년 11월 15일 17:04 #54156
themapa참가자중간에 message를 안보낸 게 있어서 message다 보내게하니 계속 로딩중으로 다음 페이지로 넘어가지 않습니다. console.log(info.message)하니 터미널창에 잘 나오는 걸 확인했습니다. 선생님 message를 넘기려면 응답.status(400).send({message : '이미 사용중인 아이디입니다.'}) 이런씩으로 코드를 짜야할 거 같은데 (err, user, info) => { console.log(info.message) 이거 안쓰고 message를 가져오는 방법이 있나요???
2022년 11월 16일 17:49 #54329
themapa참가자app.post('/', passport.authenticate('local', {failureRedirect : '/', successRedirect: '/login_success', failureMessage: true}), function(요청, 응답){ 응답.status(200).send({message : "로그인했습니다."}) })
선생님 위의 코드로 저가 라우팅을 하고 있습니다. 로그인이 실패할 경우에는 function쪽이 작동이 안하는 걸로 알고 있습니다. 응답.send를 사용하려면 function 뒤에 작성해야하는데 어떻게해야할 지 모르겠습니다. 다른 방법이 없나 찾아보다가 connect-flash쓰면 된다고 하길레 이것도 보니깐 응답.send를 해야하는 거더라구요ㅠㅠ
2022년 11월 17일 09:37 #54414
codingapple키 마스터ajax로 보내는거면 미들웨어로 쓰지말고 app.post('/login', function (요청, 응답) { passport.authenticate('local', {}, function(error, user, msg){ if (!user) { 응답.send('fail') } else { 요청.login(user, function(err){ if(err){ return next(err); } 응답.send('success') }); } })(요청, 응답); }); 이런거 씁시다
2022년 11월 24일 16:24 #55438
themapa참가자선생님 올려주신 코드를 수정해서 기능을 구현했습니다. 요청.login <- 얘는 어떻게 작동하는 함수인가요?? 비밀번호가 틀렸을 경우 유저의 id를 이용해서 5번 이상 틀릴시 아이디를 접속을 막을려고 하고 있습니다. 그래서 passport에서 비밀번호가 틀렸을 경우 false 반환하는 걸 결과로 바꿨더니 로그인이 안되네요ㅠㅠ
app.post('/', function (요청, 응답) { passport.authenticate('local', {}, function(error, user, msg){ if (user !== "로그인성공했어요") { if(msg.message === "비번틀렸어요"){ console.log(msg) } 응답.status(400).send({message : msg}) } else { 요청.login(user, function(err){ if(err){ 응답.status(400).send({message : msg}) return next(err) } 응답.status(200).send({name : user}) }); } })(요청, 응답); });
passport.use(new LocalStrategy({ usernameField: 'id', passwordField: 'pw', session: true, passReqToCallback: false, }, function (입력한아이디, 입력한비번, done) { db.collection('user').findOne({ id: 입력한아이디 }, function (에러, 결과) { // 에러확인 if (에러) return done(에러, {message: '에러가 있습니다.'})
// 아이디 확인 if (!결과) return done(null, false, { message: '존재하지않는 아이디입니다' })
// 비밀번호 확인 // 암호복구 let userPW = 결과.pw let bytes = CryptoJS.AES.decrypt(userPW, secretKey) let decrypted = JSON.parse(bytes.toString(CryptoJS.enc.Utf8)) console.log('암호복구 : ' + decrypted)
if (입력한비번 == decrypted) { return done(null, 결과, {message : "로그인성공했어요"}) } else { return done(null, 결과, { message: '비번틀렸어요' }) } }) }));
2022년 11월 24일 19:54 #55470
codingapple키 마스터사용법은 아마 공식문서에 나와있습니다 로그인시켜주는 함수입니다 done 함수에 false는 건드리지 맙시다
-
글쓴이글
8 글 보임 - 1 에서 8 까지 (총 8 중에서)
- 답변은 로그인 후 가능합니다.