node-cookie-signature 开源项目教程
node-cookie-signature项目地址:https://gitcode.com/gh_mirrors/no/node-cookie-signature
1. 项目的目录结构及介绍
node-cookie-signature/
├── LICENSE
├── README.md
├── index.js
├── package.json
└── test/
├── index.js
└── mocha.opts
- LICENSE: 项目的许可证文件。
- README.md: 项目说明文档。
- index.js: 项目的主文件,包含了cookie签名的主要功能。
- package.json: 项目的依赖和配置文件。
- test/: 测试目录,包含了项目的测试文件。
- index.js: 测试文件。
- mocha.opts: Mocha测试框架的配置文件。
2. 项目的启动文件介绍
项目的启动文件是 index.js
,它包含了cookie签名的主要功能。以下是 index.js
的简要介绍:
var crypto = require('crypto');
/**
* Sign the given `val` with `secret`.
*
* @param {String} val
* @param {String} secret
* @return {String}
* @api private
*/
exports.sign = function(val, secret){
if ('string' != typeof val) throw new TypeError("Cookie value must be provided as a string.");
if ('string' != typeof secret) throw new TypeError("Secret string must be provided.");
return val + '.' + crypto
.createHmac('sha256', secret)
.update(val)
.digest('base64')
.replace(/\=+$/, '');
};
/**
* Unsign and decode the given `val` with `secret`,
* returning `false` if the signature is invalid.
*
* @param {String} val
* @param {String} secret
* @return {String|Boolean}
* @api private
*/
exports.unsign = function(val, secret){
if ('string' != typeof val) throw new TypeError("Signed cookie string must be provided.");
if ('string' != typeof secret) throw new TypeError("Secret string must be provided.");
var str = val.slice(0, val.lastIndexOf('.'));
var mac = exports.sign(str, secret);
return crypto.timingSafeEqual(Buffer.from(mac), Buffer.from(val)) ? str : false;
};
3. 项目的配置文件介绍
项目的配置文件是 package.json
,它包含了项目的依赖和配置信息。以下是 package.json
的简要介绍:
{
"name": "cookie-signature",
"version": "1.1.0",
"description": "Sign and unsign cookies",
"keywords": [
"cookie",
"sign",
"unsign"
],
"author": "TJ Holowaychuk <tj@vision-media.ca>",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://github.com/tj/node-cookie-signature.git"
},
"devDependencies": {
"mocha": "*",
"should": "*"
},
"scripts": {
"test": "mocha --require should --reporter spec"
}
}
- name: 项目的名称。
- version: 项目的版本号。
- description: 项目的描述。
- keywords: 项目的关键词。
- author: 项目的作者。
- license: 项目的许可证。
- repository: 项目的仓库地址。
- devDependencies: 开发依赖包。
- scripts: 项目的脚本命令,例如测试命令。
node-cookie-signature项目地址:https://gitcode.com/gh_mirrors/no/node-cookie-signature