-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
80 lines (66 loc) · 2.79 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import express from 'express';
import path from 'path';
import { fileURLToPath } from 'url';
import session from 'express-session'; // 세션
import cookieParser from 'cookie-parser'; // 쿠키
import sequelize from './trashcan/db.js'; // DB 설정 파일 import
import userRoutes from './routes/route.js'; // 메인 라우터
import sessionRouter from './routes/session.js'; // 세션 확인 라우터
import cors from 'cors';
const app = express();
app.options('*', cors({
origin: 'http://localhost:3000', // 허용할 Origin
credentials: true, // 쿠키 포함
}));
app.use(cors({
origin: 'http://localhost:3000', // 허용할 Origin
credentials: true, // 쿠키를 포함한 요청 허용
}));
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', 'http://localhost:3000');
res.header('Access-Control-Allow-Credentials', 'true');
res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
next();
});
const PORT = 5000;
// __dirname 설정
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// 미들웨어 설정
app.use(cookieParser());
app.use(
session({
secret: 'your_secret_key', // 세션 암호화 키
resave: false, // 세션이 변경되지 않아도 저장 여부
saveUninitialized: false, // 초기화되지 않은 세션 저장 여부
cookie: {
httpOnly: true, // JavaScript로 쿠키 접근 불가
secure: false, // HTTPS에서만 사용 (개발 단계에서 false)
maxAge: 1000 * 60 * 30, // 세션 유지 시간: 30분
sameSite: 'lax', // CORS 요청에서도 허용
},
})
);
app.use(express.json()); // JSON 파싱
app.use(express.urlencoded({ extended: true })); // URL-encoded 데이터 파싱
app.use('/profile', express.static(path.join(__dirname, 'profile')));
// 정적 파일 경로 설정
app.use(express.static(path.join(__dirname, 'm_html')));
app.use('/uploads', express.static(path.join(__dirname, 'uploads')));
// 라우터 설정
app.use('/', sessionRouter); // 세션 확인 라우터
app.use('/', userRoutes); // 메인 라우터
// 데이터베이스 동기화 후 서버 시작 이거 한번만 봐주시면 안되나요,, 지금 json 쓰고 있어서 어차피 안쓰는 코드긴 한데 지우면 오류가 나서 일단 남겨두고 이써요 ㅠㅠ //
sequelize
.sync({ force: false }) // 데이터베이스와 테이블 동기화 (force: false -> 기존 데이터 유지)
.then(() => {
console.log('Database synchronized!');
app.listen(PORT, () => {
console.log(`Server is running at http://localhost:${PORT}`);
});
})
.catch((err) => {
console.error('Failed to synchronize database:', err);
});
export const API_BASE_URL = 'http://localhost:3000';