cookie-parser
官网:
一、概念: cookie ==> 小甜饼 , parser ==> 解析器, cookie-parser 就是用来解析 cookie 的.
二、cookie存储位置:cookie是存储在客户端浏览器中.每个浏览器的 cookie 都是独立的, 不能共享.
cookie 其实就是请求头中的一个数据.
作用: 方便向服务器发送数据,当服务器向客户端在响应头写入cookie,下一次发送请求会把cookie跟请求头一起发送给服务器。
(所以如果没有cookie-parser包,我们也可以通过req.headers在请求头中获取cookie)
cookie使用场景:通常用于服务器通过cookie识别用户的身份。
请求头:GET /admin HTTP/1.1 Host: localhost User-agent: firefox chrome ie iphone ios andoid referer: localhost/login content-type: text/htm;charset==utf-8 cookie: name=admin.......
三、使用:
1.安装 cnpm install cookie-parser --save
2. 引入并设置:
var cookieParser = require('cookie-parser');
app.use(cookieParser());
2.1 设置cookie :
kie('name','xiaohigh')
kie('name','xiaohigh', {maxAge: 600000})
★ kie('name','xiaohigh')` 如果不设置 cookie 的生命周期, 则cookie 会随着浏览器的关闭而过期.
kie('haha', 'name1=value1&name2=value2', {maxAge:10*1000, path:'/', httpOnly:true });
2.2 读取cookie : kies.name
2.3 清除cookie : res.clearCookie('name')
四、实例链接栗子
1.设置cookie
var express=require('express'); var app=express();var cookieParser=require('cookie-parser'); app.use(cookieParser());('/setCookie',function(req,res){kie('name','slig');d('ok'); });app.listen(80);
第一次请求:响应头中 set-Cookie:name=slig;path=/ 此时已把cookie写入浏览器客户端。 请求头中没有cookie
第二次请求(再次刷新页面):响应头中 set-Cookie:name=slig;path=/ ; 请求头中有上一次的cookie: Cookie:name=slig
2.获取cookie、清除cookie
var express = require('express'); var app = express();//引入cookie-parser var cookieParser = require('cookie-parser');//设置 app.use(cookieParser());//模板 app.set('view engine', 'ejs'); app.set('views','views');//路由 ('/setCookie', function(req,res){//写入kie('name','slig');//响应头中d('ok'); });//获取cookie ('/getCookie', function(req,res){//获取 console.kies.name);d('获取cookie') });//删除cookie ('/delCookie', function(req, res){res.clearCookie('name');d('clear cookie'); });// app.listen(8080);app.js
3. 模拟服务器通过cookie识别用户的身份栗子:
模拟需求: // 没有登陆可以访问 // /home 首页 /list 列表页// 必须之后之后才可以访问 // /admin 个人中心页// 登陆页面 // GET /login // 实现登陆 admin admin 为后台管理员账号密码 // POST /login
var express = require('express'); var app = express(); //引入cookie-parser var cookieParser = require('cookie-parser'); var formidable = require('formidable'); //设置 app.use(cookieParser()); //模板 app.set('view engine', 'ejs'); app.set('views','views');// 没有登陆可以访问 // /home /list // 必须之后之后才可以访问 // /admin// 登陆页面 // GET /login // 实现登陆 (账号:admin 密码:admin) 为后台管理员账号密码 // //检测用户是否登陆 cookie.id 有值 cookie.admin = 1 // POST /login ('/home',function(req,res){res.setHeader('content-type','text/html;charset=utf-8');d('网站首页!!!'); });('/list',function(req,res){res.setHeader('content-type','text/html;charset=utf-8');d('网站列表页!!!'); });//网站后台 ('/admin',function(req,res){//检测用户是否登陆 cookie.id 有值 cookie.admin = kies.id && kies.admin == 1){res.setHeader('content-type','text/html;charset=utf-8');d('网站后台!!!');}direct('/login');} });//登陆页面 ('/login', function(req,res){//显示表单der('login'); });//登陆操作 app.post('/login', function(req,res){//获取参数var form = new formidable.IncomingForm();form.parse(req, function(err, fields, files) {//fields 对象if(fields.username == 'admin' && fields.password == 'admin'){//参数正确 写入cookieres.setHeader('content-type','text/html;charset=utf-8');kie('id', 100, {maxAge: 600000});kie('admin', 1, {maxAge: 600000});d('登陆成功');}else{//参数错误 跳转到 登陆页面direct('/login');}}); });app.listen(80);app2.js
转载于:.html
本文发布于:2024-01-27 17:32:05,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063479251670.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |