在 NodeJS + Express 使用 Cookie-based Session
開發網站的人應該對 Session 都不陌生,主要是用於 Client 與 Server 之間的溝通和狀態記錄。底層的實作細節本文就不多說明,若仍不理解他的用途,只要知道它可以讓你在不同頁面之間傳遞資料,像是登入狀態等。
一般標準的『Express』利用『Connect Middleware Framework』(之後簡稱 Connect)中的模組來實作 Session 的,而預設的方法是使用 MemoryStore 的方式,也就是將 Session 資料存放於記憶體上。若你開發的是中大型的網站,也可以使用 Connect 的第三方模組『connect-redis』,利用『Redis』這樣的 Key-Value Database 來存放 Session 的資料。這些在 NodeJS + Express 的各類開發文獻中相當常見,你可以從許多網站上找到使用方法。
不過,也許你仍不滿足,希望使用近年來興起的 Cookie-based Session,Connect 也有第三方模組『cookie-sessions』可以使用。
可以直接使用 npm 安裝:
在你的 app.js 這樣使用:
後記
其實 NodeJS 還算發展階段,相關資源不算很多,若想要實作過去常用的一些功能,會需要花點功夫請教 Google 大神。
一般標準的『Express』利用『Connect Middleware Framework』(之後簡稱 Connect)中的模組來實作 Session 的,而預設的方法是使用 MemoryStore 的方式,也就是將 Session 資料存放於記憶體上。若你開發的是中大型的網站,也可以使用 Connect 的第三方模組『connect-redis』,利用『Redis』這樣的 Key-Value Database 來存放 Session 的資料。這些在 NodeJS + Express 的各類開發文獻中相當常見,你可以從許多網站上找到使用方法。
不過,也許你仍不滿足,希望使用近年來興起的 Cookie-based Session,Connect 也有第三方模組『cookie-sessions』可以使用。
可以直接使用 npm 安裝:
npm install cookie-sessions
在你的 app.js 這樣使用:
var express = require('express'); var CookieStore = require('cookie-sessions'); var app = module.exports = express.createServer(); app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser()); app.use(CookieStore({ secret: 'FredChien' })); app.use(app.router); app.use(express.static(__dirname + '/public')); }); app.get('/', function(req, res) { req.session = { email: 'cfsghost@gmail.com' }; /* Redirect to another page */ res.redirect('/getsession'); }); app.get('/getsession', function(req, res) { if (req.session) res.end('This is Fred's email address:' + req.session.email); }); app.listen(3000);
後記
其實 NodeJS 還算發展階段,相關資源不算很多,若想要實作過去常用的一些功能,會需要花點功夫請教 Google 大神。
留言
張貼留言