Quantcast
Viewing all articles
Browse latest Browse all 8691

Node.js + Express + express-session でセッション変数を使ってみる

Express + express-session でセッション変数を試す

事前準備として、フォルダ作ったりパッケージインストールしたりする

mkdir exps_test
cd exps_test
npm install--save express \
                   express-session \
                   body-parser \
                   ejs

http で確認したいので、 index.ejs を作っておく

index.ejs は view として作るので、views フォルダを作っておく

views フォルダ内に index.ejs を作る

mkdir views
cd views
nano index.ejs

index.ejs の内容はコレ

index.ejs
<!DOCTYPE html><html><head><metacharset="UTF-8"></head><body><p><%=message%></p><formaction="/"method="post"><inputtype="text"name="message"><buttontype="submit"name="button">send</button></form><ahref="/">LastUpdateData</a></body></html>

exps_test フォルダに戻って、nodeで起動するための index.js を作る

cd ../
nano index.js

index.js の内容はコレ

index.js
constexpress=require('express');constejs=require('ejs');constbodyParser=require("body-parser");constsession=require("express-session");constapp=express();app.set('ejs',ejs.renderFile);app.use(bodyParser.urlencoded({extended:false}));app.use(session({secret:"secret",resave:false,saveUninitialized:true,}));app.get('/',(req,res)=>{letmessage='no message';if(req.session.message!=undefined){message="LastUpdateData:"+req.session.message;}res.render('index.ejs',{message:message});});app.post("/",(req,res)=>{letmessage=req.body.message;req.session.message=message;res.render('index.ejs',{message:message});});app.listen(3000,()=>{console.log('Example app listening on port 3000!');});

node.js で index.js を起動する

$ node index.js
Example app listening on port 3000!

ブラウザでアクセスする

↓こんな感じになるはず
Image may be NSFW.
Clik here to view.
image.png

何かしらメッセージを入力してSendすると、no message の所が変わります。
LastUpdateData をクリックすると、最後に入力した内容が表示されます。
ブラウザを閉じるとデータが消えるので no message に戻るはず。
node を再起動してもデータが消えるので no message に戻ります。

session 設定しているとこに cookie の設定を足すと、データの有効期限が付けられたりします。
↓こんな感じにすると5秒後に LastUpdateData をクリックした場合、 no message に戻ってます。

app.use(session({
    secret: "secret",
    resave: false,
    saveUninitialized: true,
    cookie: { maxAge: 5 * 1000 }
}));

参考


Viewing all articles
Browse latest Browse all 8691

Trending Articles