프로그래밍/Node.js

Node.js 생활코딩 정리 – 다중 사용자 시스템 만들기

가카리 2016. 12. 3. 23:40
반응형

다중 사용자 시스템 만들기

 

app_session_login_file.js를 복사해서 사용한다.

 

app_multi_user_file.js

 

var express = require('express');

var session = require('express-session');//세션 사용을 위한 모듈

var bodyParser = require('body-parser');//POST 방식 전송을 위해서 필요함

var app = express();

var FileStore = require('session-file-store')(session);//session 파일 스토어를 위해 사용

 

app.use(bodyParser.urlencoded({extended: false}));//미들웨어 등록부분

//resave 세션아이디를 접속할때마다 발급하지 않는다

app.use(session({

secret: '12312dajfj23rj2po4$#%@#',

resave: false,

saveUninitialized: true,

store:new FileStore()//sessions라는 디렉토리가 생김

}));

 

app.get('/auth/logout', function(req, res){

delete req.session.displayName;//세션 삭제

res.redirect('/welcome');

});

 

app.get('/welcome', function(req, res){

if(req.session.displayName){//값이 있으면 로그인 성공

res.send(`

<h1>Hello, ${req.session.displayName}</h1>

<a href="/auth/logout">logout</a>

`);

}else{//값이 없으면 로그인에 실패 혹은 로그인 안한사람

res.send(`

<h1>Welcome</h1>

<ul>

<li><a href="/auth/login">Login</a></li>

<li><a href="/auth/register">Register</a></li>

</ul>

`);

}

});

 

var users = [

{//현재 유저는 한개만 있음

username:'egoing',

password:'111',

displayName:'kch'

}

];

 

app.post('/auth/register', function(req, res){

var user = {

username:req.body.username,

password:req.body.password,

displayName:req.body.displayName

};

users.push(user);//입력한 값을 users배열 맨뒤에 추가함

res.send(users);//한번 뿌려봄

});

 

app.get('/auth/register', function(req, res){

var output = `

<h1>Register</h1>

<form action="/auth/register" method="post">

<p>

<input type="text" name="username" placeholder="username">

</p>

<p>

<input type="password" name="password" placeholder="password">

</p>

<p>

<input type="text" name="displayName" placeholder="displayName">

</p>

<p>

<input type="submit">

</p>

</form>

`;

res.send(output);

});

 

app.post('/auth/login', function(req, res){

var user = {//현재 유저는 한개만 있음

username:'egoing',

password:'111',

displayName:'kch'

};

var uname = req.body.username;//POST방식으로 보낸 값을 가져옴

var pwd = req.body.password;

if(uname === user.username && pwd === user.password){//아이디와 패스워드 둘다 같으면

req.session.displayName = user.displayName;

res.redirect('/welcome');// welcome 페이지로 이동

}else{//비밀번호가 틀리면

res.send('who are you?<a href="/auth/login">login</a>');

}

});

 

app.get('/auth/login', function(req, res){

var output = `

<h1>Login</h1>

<form action="/auth/login" method="post">

<p>

<input type="text" name="username" placeholder="username">

</p>

<p>

<input type="password" name="password" placeholder="password">

</p>

<p>

<input type="submit">

</p>

</form>

`;

res.send(output);

});

 

 

app.get('/count', function(req, res){

if(req.session.count){//값이 있을때

req.session.count++;

}else{//처음 접속했을때 값이 없을

req.session.count = 1;//세션을 만듬

}

 

res.send('count : ' + req.session.count);

});

 

app.listen(3003, function(){

console.log('Connected 3003 port!!!');

});

 

 

실행 화면

Register 버튼이 생김

누르면 사용자 등록 창이 생김

추가하면 users배열의 값이 출력됨 추가가 된 것을 볼 수 있음.

 

출처 : https://opentutorials.org/course/2136

반응형