min1925k@gmail.com

session with Logout

...@@ -7,6 +7,7 @@ var bodyParser = require('body-parser') ...@@ -7,6 +7,7 @@ var bodyParser = require('body-parser')
7 var expressErrorHandler = require('express-error-handler'); 7 var expressErrorHandler = require('express-error-handler');
8 var indexRouter = require('./routes/index') 8 var indexRouter = require('./routes/index')
9 var loginRouter = require('./routes/login') 9 var loginRouter = require('./routes/login')
10 +var logoutRouter = require('./routes/logout')
10 var signupRouter = require('./routes/signup') 11 var signupRouter = require('./routes/signup')
11 var lpgRouter = require('./routes/lpg') 12 var lpgRouter = require('./routes/lpg')
12 var weatherRouter = require('./routes/weather') 13 var weatherRouter = require('./routes/weather')
...@@ -21,7 +22,7 @@ var app = express(); ...@@ -21,7 +22,7 @@ var app = express();
21 var router = express.Router(); 22 var router = express.Router();
22 23
23 var cookieParser = require('cookie-parser') 24 var cookieParser = require('cookie-parser')
24 -var ExpressSession = require('express-session') 25 +var session = require('express-session')
25 26
26 var database = require('./database/database'); 27 var database = require('./database/database');
27 var config = require('./config'); 28 var config = require('./config');
...@@ -46,11 +47,19 @@ app.use(express.static(path.join(__dirname, 'public'))); ...@@ -46,11 +47,19 @@ app.use(express.static(path.join(__dirname, 'public')));
46 app.use('/js', express.static(__dirname + '/node_modules/bootstrap/dist/js')); // redirect bootstrap JS 47 app.use('/js', express.static(__dirname + '/node_modules/bootstrap/dist/js')); // redirect bootstrap JS
47 app.use('/css', express.static(__dirname + '/node_modules/bootstrap/dist/css')); // redirect CSS bootstrap 48 app.use('/css', express.static(__dirname + '/node_modules/bootstrap/dist/css')); // redirect CSS bootstrap
48 49
50 +//Session 처리
51 +app.use(cookieParser());
52 +app.use(session({
53 + secret:'key',
54 + resave: true,
55 + saveUninitialized:true
56 +}));
49 57
50 // 58 //
51 app.use('/csv',csvRouter) 59 app.use('/csv',csvRouter)
52 app.use('/menu',menuRouter) 60 app.use('/menu',menuRouter)
53 app.use('/login',loginRouter); // login page route 61 app.use('/login',loginRouter); // login page route
62 +app.use('/logout',logoutRouter); // login page route
54 app.use('/weather',weatherRouter) 63 app.use('/weather',weatherRouter)
55 app.use('/lpg',lpgRouter) 64 app.use('/lpg',lpgRouter)
56 app.use('/signup',signupRouter); // sign up page route 65 app.use('/signup',signupRouter); // sign up page route
...@@ -60,13 +69,6 @@ app.use('/showpost',showpostRouter); ...@@ -60,13 +69,6 @@ app.use('/showpost',showpostRouter);
60 app.use('/', indexRouter); // main page route 69 app.use('/', indexRouter); // main page route
61 70
62 71
63 -//Session 처리
64 -app.use(cookieParser());
65 -app.use(ExpressSession({
66 - secret:'key',
67 - resave: true,
68 - saveUninitialized:true
69 -}));
70 72
71 //모든 router 처리가 끝난 후 404 오류 페이지 처리 73 //모든 router 처리가 끝난 후 404 오류 페이지 처리
72 var errorHandler = expressErrorHandler({ 74 var errorHandler = expressErrorHandler({
......
...@@ -5,7 +5,9 @@ var router = express.Router(); ...@@ -5,7 +5,9 @@ var router = express.Router();
5 5
6 6
7 router.get('/',function(req,res){ 7 router.get('/',function(req,res){
8 - res.render('index.html') 8 + res.render('index.html', {
9 + session : req.session
10 + })
9 }) 11 })
10 12
11 13
......
...@@ -36,13 +36,16 @@ router.post('/process', function(req, res) { ...@@ -36,13 +36,16 @@ router.post('/process', function(req, res) {
36 // 조회된 레코드가 있으면 성공 응답 전송 36 // 조회된 레코드가 있으면 성공 응답 전송
37 if (docs) { 37 if (docs) {
38 console.dir(docs); 38 console.dir(docs);
39 - 39 + req.session.sessId = paramId;
40 + req.session.save();
40 // 조회 결과에서 사용자 이름 확인 41 // 조회 결과에서 사용자 이름 확인
41 - res.render('/') 42 + res.render('index.html',{
43 + session : req.session
44 + });
42 45
43 46
44 } else { // 조회된 레코드가 없는 경우 실패 응답 전송 47 } else { // 조회된 레코드가 없는 경우 실패 응답 전송
45 - res.render('/') 48 + res.render('login.html');
46 49
47 } 50 }
48 }); 51 });
......
1 +var Conn = require('../database/database')
2 +var express = require('express')
3 +var router = express.Router();
4 +
5 +//라우팅 함수 등록
6 +
7 +router.get('/',function(req,res){
8 + req.session.destroy(function() {
9 + req.session;
10 + });
11 + res.render('index.html')
12 +});
13 +
14 +module.exports = router
...\ No newline at end of file ...\ No newline at end of file
1 -
2 var express = require('express') 1 var express = require('express')
3 var router = express.Router() 2 var router = express.Router()
4 var Entities = require('html-entities').AllHtmlEntities; 3 var Entities = require('html-entities').AllHtmlEntities;
...@@ -39,6 +38,7 @@ router.get('/',function(req,res){ ...@@ -39,6 +38,7 @@ router.get('/',function(req,res){
39 38
40 // 뷰 템플레이트를 이용하여 렌더링한 후 전송 39 // 뷰 템플레이트를 이용하여 렌더링한 후 전송
41 var context = { 40 var context = {
41 + session: req.session,
42 title: '글 목록', 42 title: '글 목록',
43 posts: results, 43 posts: results,
44 page: parseInt(paramPage), 44 page: parseInt(paramPage),
......
...@@ -4,7 +4,9 @@ var router = express.Router() ...@@ -4,7 +4,9 @@ var router = express.Router()
4 var Entities = require('html-entities').AllHtmlEntities; 4 var Entities = require('html-entities').AllHtmlEntities;
5 5
6 router.get('/',function(req,res){ 6 router.get('/',function(req,res){
7 - res.render('postadd.ejs'); 7 + res.render('postadd.ejs',{
8 + session : req.session
9 + });
8 }) 10 })
9 11
10 module.exports = router; 12 module.exports = router;
......
File mode changed
1 +<!DOCTYPE html>
2 +<html lang="en">
3 +
4 +<head>
5 + <meta charset="utf-8" />
6 + <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
7 + <meta name="description" content="" />
8 + <meta name="author" content="" />
9 + <title>Modern Business - Start Bootstrap Template</title>
10 + <!-- Favicon-->
11 + <link rel="icon" type="image/x-icon" href="assets/favicon.ico" />
12 + <!-- Bootstrap icons-->
13 + <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css" rel="stylesheet" />
14 + <!-- Core theme CSS (includes Bootstrap)-->
15 + <link href="css/styles.css" rel="stylesheet" />
16 + <script src="http://code.jquery.com/jquery-2.1.4.js"></script>
17 +</head>
18 +
19 +<body class="d-flex flex-column h-100">
20 + <main class="flex-shrink-0">
21 + <!-- Navigation-->
22 + <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
23 + <div class="container px-5">
24 + <a class="navbar-brand" href="/">휴게소 정보</a>
25 + <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
26 + data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
27 + aria-expanded="false" aria-label="Toggle navigation"><span
28 + class="navbar-toggler-icon"></span></button>
29 + <div class="collapse navbar-collapse" id="navbarSupportedContent">
30 + <ul class="navbar-nav ms-auto mb-2 mb-lg-0">
31 + <li class="nav-item"><a class="nav-link" href="/">Home</a></li>
32 + <li class="nav-item"><a class="nav-link" href="/menu">휴게소 메뉴</a></li>
33 + <li class="nav-item"><a class="nav-link" href="/weather">날씨</a></li>
34 + <li class="nav-item"><a class="nav-link" href="/lpg">LPG</a></li>
35 + <li class="nav-item"><a class="nav-link" href="/post">Board</a></li>
36 + <% if(session.sessId){ %>
37 + <li class="nav-item"><a class="nav-link" href="/logout">Log-Out</a></li>
38 + <% } else { %>
39 + <li class="nav-item dropdown">
40 + <a class="nav-link dropdown-toggle" id="navbarDropdownLogin" href="#" role="button"
41 + data-bs-toggle="dropdown" aria-expanded="false">Login</a>
42 + <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdownLogin">
43 + <li><a class="dropdown-item" href="/login">Login</a></li>
44 + <li><a class="dropdown-item" href="/signup">Sign-up</a></li>
45 + </ul>
46 + </li>
47 + <% } %>
48 + </ul>
49 + </div>
50 + </div>
51 + </nav>
...\ No newline at end of file ...\ No newline at end of file
1 -<!DOCTYPE html> 1 +<%- include('./header.ejs') %>
2 -<html lang="en">
3 -
4 -<head>
5 - <meta charset="utf-8" />
6 - <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
7 - <meta name="description" content="" />
8 - <meta name="author" content="" />
9 - <title>Modern Business - Start Bootstrap Template</title>
10 - <!-- Favicon-->
11 - <link rel="icon" type="image/x-icon" href="assets/favicon.ico" />
12 - <!-- Bootstrap icons-->
13 - <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.5.0/font/bootstrap-icons.css" rel="stylesheet" />
14 - <!-- Core theme CSS (includes Bootstrap)-->
15 - <link href="css/styles.css" rel="stylesheet" />
16 - <script src="http://code.jquery.com/jquery-2.1.4.js"></script>
17 -</head>
18 -
19 -<body class="d-flex flex-column h-100">
20 - <main class="flex-shrink-0">
21 - <!-- Navigation-->
22 - <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
23 - <div class="container px-5">
24 - <a class="navbar-brand" href="/">휴게소 정보</a>
25 - <button class="navbar-toggler" type="button" data-bs-toggle="collapse"
26 - data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
27 - aria-expanded="false" aria-label="Toggle navigation"><span
28 - class="navbar-toggler-icon"></span></button>
29 - <div class="collapse navbar-collapse" id="navbarSupportedContent">
30 - <ul class="navbar-nav ms-auto mb-2 mb-lg-0">
31 - <li class="nav-item"><a class="nav-link" href="/">Home</a></li>
32 - <li class="nav-item"><a class="nav-link" href="/menu">휴게소 메뉴</a></li>
33 - <li class="nav-item"><a class="nav-link" href="/weather">날씨</a></li>
34 - <li class="nav-item"><a class="nav-link" href="/lpg">LPG</a></li>
35 - <li class="nav-item"><a class="nav-link" href="/post">Board</a></li>
36 - <li class="nav-item dropdown">
37 - <a class="nav-link dropdown-toggle" id="navbarDropdownBlog" href="#" role="button"
38 - data-bs-toggle="dropdown" aria-expanded="false">Blog</a>
39 - <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdownBlog">
40 - <li><a class="dropdown-item" href="blog-home.html">Blog Home</a></li>
41 - <li><a class="dropdown-item" href="blog-post.html">Blog Post</a></li>
42 - </ul>
43 - </li>
44 - <li class="nav-item dropdown">
45 - <a class="nav-link dropdown-toggle" id="navbarDropdownLogin" href="#" role="button"
46 - data-bs-toggle="dropdown" aria-expanded="false">Login</a>
47 - <ul class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdownLogin">
48 - <li><a class="dropdown-item" href="/login">Login</a></li>
49 - <li><a class="dropdown-item" href="/signup">Sign-up</a></li>
50 - </ul>
51 - </li>
52 - </ul>
53 - </div>
54 - </div>
55 - </nav>
56 <!-- Page Content--> 2 <!-- Page Content-->
57 <div class="container"> 3 <div class="container">
58 <br> 4 <br>
......