-
글쓴이글
-
2022년 4월 28일 14:45 #32781
이준우참가자app.get('/logout', function(req,res){
console.log('logout')
req.logout();
req.session.destroy((function(){
res.cookie('connect.sid','',{maxAge:0})
res.redirect('/');
}))});
이렇게 로그아웃을 했는데 res.redirect가 실행되지 않는거같습니다 ..ㅠ 어떻게해야할까요
2022년 4월 29일 14:36 #32853
이준우참가자const express = require('express');
const path = require('path');
const app = express();
const MongoClient = require('mongodb').MongoClient;const bodyParser = require('body-parser');//요청.뭐뭐 하기좋게만들어주는 라이브러리
app.use(bodyParser.urlencoded({extended : true}));
const http = require('http').createServer(app);
app.use(express.json());
var cors = require('cors');
app.use(cors());//passport 설치
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());var db;
MongoClient.connect('mongodb+srv://admin:@cluster0.1dazw.mongodb.net/myFirstDatabase?retryWrites=true&w=majority',{ useUnifiedTopology: true }, function(에러, client){
if (에러) return console.log(에러);
db = client.db('project')
http.listen(8070, function () {
console.log('listening on 8080')
});
})app.use(express.static(path.join(__dirname, 'reactproject/build')));
app.get('/', function (요청, 응답) {
응답.sendFile(path.join(__dirname, '/reactproject/build/index.html'));
});//로그인
app.post('/login', passport.authenticate('local', {failureRedirect : '/fail'}),function(req , res){
console.log('hello login')
db.collection('registerNav').find().toArray().then(result =>{
var logincount = [...result];
console.log(logincount[0].count);
if(logincount[0].count== 1){
db.collection('registerNav').updateOne({name : 'logincount'},{ $inc :{count:1}},function(에러,결과){
res.json(logincount[0].count)
})
}else if(logincount[0].count== 2){
db.collection('registerNav').updateOne({name : 'logincount'},{ $inc :{count:-1}},function(에러,결과){
res.json(logincount[0].count)
})
}
})
res.redirect('/')
})
//로그인Nav 변경
app.get('/loginNav',function(req,res){
db.collection('registerNav').find().toArray().then(result =>{
var logincount = [...result];
console.log(logincount[0].count);
res.json(logincount[0].count)
// if(logincount[0].count== 1){
// db.collection('registerNav').updateOne({name : 'logincount'},{ $inc :{count:1}},function(에러,결과){
// res.json(logincount[0].count)
// })
// }else if(logincount[0].count== 2){
// db.collection('registerNav').updateOne({name : 'logincount'},{ $inc :{count:-1}},function(에러,결과){
// res.json(logincount[0].count)
// })
// }
})})
//로그인 중복체크
function 로그인중복체크(요청,응답, next){
if(요청.user){
next()
} else{
응답.send('로그인안하셨는데요')
}
}passport.use(new LocalStrategy({
usernameField: 'loginId',
passwordField: 'loginPw',
session: true,
passReqToCallback: false,
}, function (입력한아이디, 입력한비번, done) {
console.log(입력한아이디, 입력한비번);
db.collection('register').findOne({ _id: 입력한아이디 }, function (에러, 결과) {
console.log(결과)
if (에러) return done(에러)if (!결과) return done(null, false, { message: '존재하지않는 아이디요' })
if (입력한비번 == 결과.비밀번호) {
return done(null, 결과);
} else {
return done(null, false, { message: '비번틀렸어요' })
}
})
}));//로그아웃
app.get('/logout', function(req,res){
console.log('logout')
req.logout();
req.session.destroy(function(){
res.cookie('connect.sid','',{maxAge:0})
res.redirect('/');
})
});
//위의 결과가 user로 들어옴
passport.serializeUser(function(user,done){
console.log(user)
done(null,user._id)
});//이세션 데이터로 DB에서 찾는법
passport.deserializeUser(function(아이디,done){
// DB에서 위에서 있는 USER.ID 로 유저를 찾은 뒤에 유저 정보를 {} 에 넣음
db.collection('register').findOne({_id : 아이디},function(에러, 결과){
done(null,결과)
})
});//회원가입
app.post('/register', function(요청,응답){
console.log('전송왔음?')
db.collection('register').insertOne({_id: 요청.body.pw, 비밀번호 : 요청.body.id}, function(에러,결과){
console.log('저장완료');
})
응답.redirect('/')
})//글작성
app.post('/write',function(요청,응답){
console.log('통신왔다!')
db.collection('counter').findOne({name:'게시물갯수'},function(에러,결과){
var totalPost = 결과.totalPost;
var writePost = {_id: totalPost+1, title:요청.body.title , 내용:요청.body.내용 , date : new Date().toLocaleDateString() }
db.collection('post').insertOne(writePost,function(에러,결과){
console.log('저장완료')
db.collection('counter').updateOne({name : '게시물갯수'},{ $inc :{totalPost:1}},function(에러,결과){
if(에러){
return console.log(에러)
}else{
console.log('성공')
db.collection('post').find().toArray().then((결과)=>{
응답.json(결과[결과.length-1])
})
}
})
})
})})
//메인페이지 글보내주기
app.get('/data',function(요청,응답){
db.collection('post').find().toArray().then((결과)=>{
응답.json(결과)
})
})// react router를 쓰면 이기능을 써야함
app.get('*', function (요청, 응답) {
응답.sendFile(path.join(__dirname, '/reactproject/build/index.html'));
});저 괄호 지우고 했는데도 리다이렉트가 되면서 새로고침이 되어야하는데 안됩니다 ㅠ
전체 코드 한번올려봅니다.. 로그아웃부분입니다 ㅠ
그리고 혹시 res.redirect 랑 res.~~ 를 같이 쓸수 있는 방법은없을까요 ..?
2022년 4월 29일 21:21 #32897
codingapple키 마스터req.logout();
res.clearCookie('connect.sid');
res.redirect('/');logout 요청시 이거 실행해봅시다
-
글쓴이글
- 답변은 로그인 후 가능합니다.