Bab*_*med 2 cookies node.js express
我正在研究express / node.js并试图了解expressjs的cookie,并且正在像这样设置cookie:
var express = require('express');
var app = express();
var cookieParser = require('cookie-parser');
app.use(cookieParser());
app.get('/', function(req, res){
res.cookie('cookie1', 'This is my first cooke', {maxAge: 1000*60*60*24*7, httpOnly: true});
res.end('Cookie has been set');
});
Run Code Online (Sandbox Code Playgroud)
并按如下方式访问Cookie:
app.get('/readCookies',function(req, res){
res.send(req.cookies.cookie1);
});
Run Code Online (Sandbox Code Playgroud)
但是问题是signed: true在设置cookie的过程中包括用于编码cookie值的选项时出现了以下错误:
Error: cookieParser("secret") required for signed cookies
Run Code Online (Sandbox Code Playgroud)
请帮助我,在此先感谢
rob*_*lep 10
该错误说明了要发送已签名的Cookie所需执行的操作:
错误:签名的cookie需要cookieParser(“ secret”)
该Express文档状态:
使用
cookie-parser中间件时,此方法还支持签名的cookie。只需将signed选项设置为即可true。然后res.cookie()将使用传递的秘密cookieParser(secret)对值进行签名。
该cookie-parser文档指出:
cookieParser(secret,options):
secret用于签署Cookie的字符串或数组。这是可选的,如果未指定,将不会解析签名的cookie。如果提供了字符串,则将其用作密码。
所以一切都结合起来了:
安装cookie-parser中间件:
npm install cookie-parser
Run Code Online (Sandbox Code Playgroud)将其添加到Express应用中:
const cookieParser = require('cookie-parser');
...
app.use(cookieParser('MY SECRET'));
Run Code Online (Sandbox Code Playgroud)使它成为Cookie:
res.cookie('cookie1', 'This is my first cookie', { signed : true });
Run Code Online (Sandbox Code Playgroud)然后读回cookie值:
res.send(req.signedCookies.cookie1);
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
2108 次 |
| 最近记录: |