2 글 보임 - 1 에서 2 까지 (총 2 중에서)
-
글쓴이글
-
2023년 3월 21일 17:03 #73102
이준혁참가자현재 리액트를 활용해서 로그인시 세션을 생성하려고 하는데 로그인까지는 되는데 세션 생성 자체가 안되는데 어디서 잘 못 된걸까요? 코드 한 번 적어놓겠습니다 선생님 감사합니다!
const express = require('express'); const MongoClient = require('mongodb').MongoClient; const app = express(); const path = require('path'); const bodyParser = require('body-parser'); const passport = require('passport') const LocalStrategy = require('passport-local').Strategy; const session = require('express-session');
app.use(express.json()); var cors = require('cors'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cors()); app.use(express.json()); app.use(session({secret : 'secretKey', resave : true ,saveUninitialized : false})); app.use(passport.initialize()); app.use(passport.session());
const url = "mongodb+srv://jun0317:dlwnsgur0317@cluster0.dtimw9s.mongodb.net/?retryWrites=true&w=majority" var db; MongoClient.connect(url, (err, client) => { if (err) { console.log("Error connecting to MongoDB:", err); return; } db = client.db("prepa"); app.listen(8080, () => { console.log("8080입장"); }); app.use(express.static(path.join(__dirname, "prepa/build"))); // app.get('/', (req, res) => { // res.sendFile(path.join(__dirname, '/prepa/build/index.html')) // })
// 테스트용 app.post("/data", (req, res) => { const data = req.body; console.log(req.body); db.collection("training") .insertOne(data) .then((result) => { console.log(req.body); }) .catch((err) => { console.error(err); res.status(500).send(err); }); });
// 로그인 유효성 검사 app.post( "/login", passport.authenticate("local", { failureRedirect: "/fail", }), (req, res) => { res.status(200).json({ message: true }); } );
passport.use( new LocalStrategy( { usernameField: "id", passwordField: "pw", session: true, passReqToCallback: false, }, (id, pw, done) => { // Fix typo in parameter names here db.collection("user").findOne({ id: id }, (err, val) => { if (err) return done(err);
if (!val) return done(null, false, { message: "존재하지 않는 아이디 입니다", }); if (pw === val.password) { return done(null, val); // Pass user object to done function } else { return done(null, false, { message: "비밀번호가 틀렸습니다" }); } }); } ) );
passport.serializeUser(function(user, done){ done(null, user.id); });
passport.deserializeUser(function (id, done){ done(null, {}); });
// app.get('*', (req, res) => { // res.sendFile(path.join(__dirname, '/prepa/build/index.html')) // }) });
-
글쓴이글
2 글 보임 - 1 에서 2 까지 (총 2 중에서)
- 답변은 로그인 후 가능합니다.