1. 程式人生 > >Nodejs學習文件day2———express框架及cookie、session

Nodejs學習文件day2———express框架及cookie、session

express框架使用

  • 安裝     
  1. npm install express express-static
  • 配置
  1. 建立服務  var server=express();
  2. 監聽        server.listen(8080);
  3. 處理請求  server.use('地址',function(req,res){     });
  • 接收請求(3種方法)
  1. .get(‘/’,function(req,res){});
  2. .post(‘/’,function(req,res){});
  3. .use(‘/’,function(req,res){});   //通吃,可以接收get和post
  • 相應資料

express是一個非侵入式框架

即express和原生的區別只在於express仍能使用原生的函式如res.write();和res.end();

但express比原生多了一個res.send();

這個函式可以直接傳送json資料

總的來說,express保留了原生的功能添加了一些方法,增強原有的功能

express-static用法

const expressStatic=requeire('express-static');

server.use(expressStatic('./www'));

GET/POST資料

GET-無需中介軟體 req.query

POST-需要”body-parser”

server.use(bodyParser.urlencoded({limit:xxx}));

server.use(function(req,res,next){

		req.body

});

鏈式操作

server.use(function(req,res,next){});

server.get(function(req,res,next){}); //server.get(‘/’,function(req,res,next){});

server.post(function(req,res,next){});

next-----下一個步驟

next();

//模擬鏈式操作

server.use(‘/login’,function(){

		mysql.query(function(){

			if(有錯)

				res.emit(‘error’);

			else

				next();

});

});

中介軟體(body-parser)

next();

自己寫中介軟體

server.use(function(req,res,next){
		var str=’’;
		req.on(‘data’,function(data){
			str+=data;
});
req.on(‘end’,function(){
	req.body=querystring.parse(str);
next();
});
});

cookie和session存在的意義

http 缺點:無狀態的  兩次請求之間無法判斷是不是同一個人

cookie:

cookie:在瀏覽器儲存一些資料,每次請求都會帶過來

*不安全、有限(4k)空間非常小省著用

1.讀取——cookie-parsercookie-parser   

server.use(cookieParser(‘簽名’));

server.use(function(){

		req.cookies  未簽名

		req.signedCookies  簽名版

});

2.傳送——cookie-session

res.secret=’字串’;

res.cookie(‘名字’,’值’,{path:’/’,maxAge:毫秒,signed:true});

3.刪除cookie

res.clearCookie(名字);

session:

session:儲存資料,儲存在服務端

*安全、無限(取決於伺服器大小)

mod:cookie-session

使用:

server.use(cookieParser());
server.use(cookieSession({
			key:[]
}))
server.use(‘/’,function(){
			req.session
});
刪除:
delete req.session

session:基於cookie實現的

*cookie中會有一個session的ID,伺服器利用sessionid找到session檔案、讀取、寫入

隱患:session劫持

安全的session:

const express=require('express');
const cookieParser=require('cookie-parser');
const cookieSession=require('cookie-session');

var server=express();

//多個金鑰
var arr[];//定義一個空陣列
for(var i=0;i<10000;i++)
{
	arr.push('sig_'+Math.random());  //1萬個隨機金鑰
}
server.use(cookieParser());
server.use(cookieSession({
	name:'sess',  //隨意改名
	keys:arr,
	maxAge:1000*3600*2
}));
//session
server.use('/',function(req,res){

	if(req.session['count']==null){
		req.session['count']=1;
	}else{
		req.session['count']++;
	}
	console.log(req.session['conunt']);
	res.send('ok');
});

server.listen(8081);