2 글 보임 - 1 에서 2 까지 (총 2 중에서)
-
글쓴이글
-
2022년 9월 1일 16:53 #44948
권용성참가자로그인 할 때 일부러 잘못된 아이디와 비밀번호로 로그인을 하면 유효하지 않은 아이디, 비밀번호라는 메세지가 아니라 fail 페이지로 가버리네요...ㅠㅠ 뭐가 잘못된걸까요? 아래는 코드입니다.
const express = require("express"); const app = express(); app.use(express.urlencoded({ extended: true })); const MongoClient = require("mongodb").MongoClient; const methodOverride = require('method-override') app.use(methodOverride('_method'))
app.set("view engine", "ejs"); app.use('/public', express.static('public'));
MongoClient.connect( "mongodb+srv://kdttodoapp:qwer1234@cluster0.t3ifw7q.mongodb.net/?retryWrites=true&w=majority", function (에러, client) { if (에러) { return console.log(에러); }
db = client.db("todoapp");
// db.collection('post').insertOne({이름 : 'Hansol', 나이 : 31}, function(에러, 결과){ // console.log('저장완료'); // });
app.listen(8080, function () { console.log("listening on 8080"); }); } );
app.get("/pet", function (요청, 응답) { 응답.send("펫용품을 쇼핑할 수 있는 페이지입니다."); });
app.get("/beauty", function (요청, 응답) { 응답.send("뷰티용품을 쇼핑할 수 있는 페이지입니다."); });
app.get("/", function (요청, 응답) { 응답.render("index.ejs"); });
app.get("/write", function (요청, 응답) { 응답.render("write.ejs"); });
app.post("/add", function (요청, 응답) { // 응답.send("전송완료"); db.collection("counter").findOne({ name: "게시물갯수" }, function (에러, 결과) { console.log(결과.totalPost); var 총게시물갯수 = 결과.totalPost;
db.collection("post").insertOne( { _id: 총게시물갯수 + 1, 할일: 요청.body.title, 날짜: 요청.body.date }, function (에러, 결과) { console.log("저장완료"); db.collection("counter").updateOne({ name: "게시물갯수" }, { $inc: { totalPost: 1 } }, function (에러, 결과) { if (에러) { return console.log(에러); } else { console.log(결과); 응답.redirect('/list'); } }); }); }); });
app.get("/list", function (요청, 응답) { db.collection("post").find().toArray(function (에러, 결과) { console.log(결과); 응답.render("list.ejs", { posts: 결과 }); }); });
app.delete('/delete', function(요청, 응답){ console.log(요청.body) 요청.body._id = parseInt(요청.body._id); db.collection('post').deleteOne(요청.body, function(에러, 결과){ console.log('삭제완료'); 응답.status(200).send({ message : '성공했습니다.' }); }); });
app.get('/detail/:id', function(요청, 응답){ db.collection('post').findOne({_id : parseInt(요청.params.id)}, function(에러, 결과){ console.log(결과); 응답.render('detail.ejs', { data : 결과}) }); });
app.get('/edit/:id', function(요청, 응답){ db.collection('post').findOne({_id : parseInt(요청.params.id)}, function(에러, 결과){ console.log(결과); 응답.render('edit.ejs', { post : 결과}) }); });
app.put('/edit', function(요청, 응답){ db.collection('post').updateOne({ _id: parseInt(요청.body.id) }, {$set : { 할일: 요청.body.title, 날짜: 요청.body.date }}, function(에러, 결과){ console.log(결과); 응답.redirect('/list'); }); });
const passport = require('passport'); const LocalStrategy = require('passport-local').Strategy; const session = require('express-session');
app.use(session({secret : '비밀코드', resave : true, saveUninitialized: false})); app.use(passport.initialize()); app.use(passport.session());
app.get('/login', function(요청, 응답){ 응답.render('login.ejs'); }); app.post('/login', passport.authenticate('local', { failureRedirect : '/fail' }),function(요청, 응답){ 응답.redirect('/mypage'); });
app.get('/mypage', 로그인했니, function(요청, 응답){ console.log(요청.user); 응답.render('mypage.ejs', 사용자 = 요청.user); });
function 로그인했니(요청, 응답, next){ if(요청.user){ next(); }else{ 응답.send('로그인 안하셨는데요?'); } }
app.get('/signup', function(요청, 응답){ 응답.render('signup.ejs'); });
app.post('/signup', function(요청, 응답){ db.collection('login').insertOne({id : 요청.body.id, pw : 요청.body.pw}, function(에러, 결과){ if (에러) { return console.log(에러); } else { console.log(결과); 응답.redirect('/login'); } }) });
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: '유효하지 않은 아이디입니다.' }) if (입력한비번 == 결과.pw) { return done(null, 결과) } else { return done(null, false, { message: '유효하지 않은 비밀번호입니다.' }) } }) }));
passport.serializeUser(function(user, done){ done(null, user.id); });
passport.deserializeUser(function(아이디, done){ db.collection('login').findOne({id: 아이디}, function(에러, 결과){ done(null, 결과) }) });
// app.get('/fail', function(요청, 응답){ // // })
2022년 9월 1일 19:59 #44987
codingapple키 마스터failureRedirect 어쩌구 해놓은것때문에 실패하면 거기로 이동합니다 이동말고 다른걸 해주고 싶으면 flash메세지 어쩌구 검색해봅시다
-
글쓴이글
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
- 답변은 로그인 후 가능합니다.