Skip to content

Commit 485cea3

Browse files
update module, demo, readme
1 parent eac4175 commit 485cea3

File tree

4 files changed

+85
-57
lines changed

4 files changed

+85
-57
lines changed

README.md

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@
33
```
44
Позволяет добавлять, удалять и получать требуемые кукисы.
55
Позволяет устанвить простое шифрование кукисов.
6+
Метод "start" помещает функционал, название и значение кукисов в req.cookies
7+
8+
req.cookies.headers - строка со списком кукисов до расшифровки
9+
req.cookies.parse - объект с названиями и значениями кукисов
10+
req.cookies.set - функция установки кукиса
11+
req.cookies.delete - функция удаления кукиса
612
```
713

814
## Подключение
@@ -14,8 +20,9 @@ var cookies = require('encode-decode-cookies')({
1420
//Формируем задачу
1521
var app = function(req, res) {
1622

17-
//Подключаем и запускаем модуль кукисов
18-
req.cookies = cookies.start(req, res);
23+
cookies.start(req, res);
24+
25+
console.log(req.cookies);
1926

2027
...
2128

@@ -37,9 +44,13 @@ req.cookies.set( name, value, time, path || '/');
3744
req.cookies.delete( name );
3845
```
3946

40-
### Получение всех кукисов
47+
### Получение всех кукисов до расшифровки
48+
49+
var my_cookies_encode = req.cookies.headers
50+
51+
### Получение всех кукисов после расшифровки
4152
```JS
42-
var my_cookies = req.cookies.parse;
53+
var my_cookies_decode = req.cookies.parse;
4354
```
4455

4556
### Получение отдельного кукиса

_demo/server.js

Lines changed: 43 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -30,57 +30,69 @@ myConfig.cookies = {
3030
};
3131
var cookies = require('encode-decode-cookies')(myConfig.cookies);
3232

33-
//Формируем задачу
34-
var app = function(req, res) {
35-
36-
//Установим метку времени
37-
if (myConfig.data.isDebug) {
38-
console.log('\nПолучен запрос req.url', req.url);
39-
console.time('app');
40-
}
41-
//Подключаем и запускаем модуль кукисов
42-
req.cookies = cookies.start(req, res);
43-
33+
var controller = function(req, res, next) {
4434
var url = req.url.split('/');
35+
4536
if (url[1]=='set') {
4637
//Установка
4738
var name = url[2];
4839
var value = url[3];
4940
var time = Number(url[4]);
5041
req.cookies.set( name, value, time, '/');
51-
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
52-
res.write('<div style="color:blue">Установлено "' + name + '" значение "' + value + '" на ' + (time==0 ? 'все время сессии' : time + ' секунд') + '</div>');
42+
//Возврат на главную страницу
43+
res.writeHead(302, {'Location':'/'});
44+
res.end();
45+
return next();
5346
} else if (url[1]=='del') {
5447
//Удаление
5548
var name = url[2];
5649
req.cookies.delete(name);
57-
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
58-
res.write('<div style="color:blue">Удалено "' + name + '"</div>');
50+
//Возврат на главную страницу
51+
res.writeHead(302, {'Location':'/'});
52+
res.end();
53+
return next();
5954
} else {
60-
//Просмотр
55+
//Вывод главной страницы
6156
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
57+
res.write('<style>* {font-size:18px} h1 {font-size:32px;margin-bottom:10px} h2 {font-size:24px;margin-bottom:10px} a {text-decoration:none; }</style>');
58+
res.write('<h1>Главная страница <a href="/" title="Обновить">(ОБНОВИТЬ)</a></h1> ');
59+
res.write('<h2>Зашифрованные кукисы клиента</h2>');
6260
res.write('req.cookies.headers = "<b>' + req.cookies.headers + '</b>"');
63-
res.write('<br/><br/>');
61+
res.write('<h2>Расшифрованные кукисы клиента</h2>');
6462
res.write('req.cookies.parse = ');
6563
res.write(req.cookies.parse.myFormat());
64+
res.write('<br/><br/>');
65+
//Добавляем меню
66+
res.write('<h2>УСТАНОВИТЬ ДАННЫЕ<br/>req.cookies.set( name, value, time, "/")</h2>');
67+
res.write('<div><a href="/set/user_id/17/15">Установить <b>user_id</b> значение <b>17</b> на <b>15 секунд</b></a></div>');
68+
res.write('<div><a href="/set/status/active/20">Установить <b>status</b> значение <b>active</b> на <b>20 секунд</b></a></div>');
69+
res.write('<div><a href="/set/session_name/ABCDEFGH/0">Установить <b>session_name</b> значение <b>ABCDEFGH</b> на <b>все время сессии</b></a></div>');
70+
res.write('<h2>УДАЛИТЬ ДАННЫЕ<br/>req.cookies.delete(name)</h2>');
71+
res.write('<div><a href="/del/user_id">Удалить <b>user_id</b></a></div>');
72+
res.write('<div><a href="/del/session_name">Удалить <b>session_name</b></a></div>');
73+
res.write('<div><a href="/del/status">Удалить <b>status</b></a></div>');
74+
res.end();
75+
return next();
6676
}
67-
res.write('<style>* {font-size:18px} a {text-decoration:none; }</style>');
68-
res.write('<br/><br/>');
69-
res.write('<div><a href="/">Список значений</a></div>');
70-
res.write('<br/>');
71-
res.write('<div><a href="/set/user_id/17/15">Установить <b>user_id</b> значение <b>17</b> на <b>15 секунд</b></a></div>');
72-
res.write('<div><a href="/set/status/active/20">Установить <b>status</b> значение <b>active</b> на <b>20 секунд</b></a></div>');
73-
res.write('<div><a href="/set/session_name/ABCDEFGH/0">Установить <b>session_name</b> значение <b>ABCDEFGH</b> на <b>все время сессии</b></a></div>');
74-
res.write('<br/>');
75-
res.write('<div><a href="/del/user_id">Удалить <b>user_id</b></a></div>');
76-
res.write('<div><a href="/del/session_name">Удалить <b>session_name</b></a></div>');
77-
res.write('<div><a href="/del/status">Удалить <b>status</b></a></div>');
78-
res.end();
77+
}
78+
//Формируем задачу
79+
var app = function(req, res) {
7980

80-
//Выводим общее время
81+
//Установим метку времени
8182
if (myConfig.data.isDebug) {
82-
console.timeEnd('app');
83+
console.log('\nПолучен запрос req.url', req.url);
84+
console.time('app');
8385
}
86+
//Подключаем и запускаем модуль кукисов --> req.cookies
87+
cookies.start(req, res);
88+
89+
//Запуск контроллера обработки запросов
90+
controller(req, res, function() {
91+
//Выводим общее время
92+
if (myConfig.data.isDebug) {
93+
console.timeEnd('app');
94+
}
95+
});
8496
};
8597
//Создаем и запускаем сервер для задачи
8698
var server = require('http').createServer(app);

index.js

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -38,50 +38,55 @@ var Cookies = function (config) {
3838
//Старт модуля
3939
this.start = function (req, res) {
4040
//Формируеи объект
41-
var result = {};
41+
req.cookies = {};
4242
//Значение до расшифровки
43-
result.headers = req.headers.cookie;
43+
req.cookies.headers = req.headers.cookie;
4444
//Функция установки кукиса
45-
result.set = function (name, value, time, path) {
45+
req.cookies.set = function (name_decode, value_decode, time, path) {
4646
time = time==null ? 0 : Number(time);
4747
path = path==null ? '/' : path;
48-
//Считываем массив существующих в заголовке кукисов
49-
var cookies = res.getHeader ('Set-Cookie') || [];
48+
//Считываем массив существующих в заголовке зашифрованных кукисов
49+
var cookies_encode = res.getHeader ('Set-Cookie') || [];
5050
//Добавляем новый кукис
51-
cookies.push([
52-
self.encode(name + '', self.config.password) + '=' + self.encode(value + '', self.config.password),
51+
var name_encode = self.encode(name_decode + '', self.config.password);
52+
var value_encode = self.encode(value_decode + '', self.config.password);
53+
cookies_encode.push([
54+
name_encode + '=' + value_encode,
5355
'path' + '=' + path,
5456
'expires' + '=' + (time ? (new Date(Date.now() + time*1000)).toGMTString() : 0),
5557
].join('; '));
5658
//Устанавливаем в заголовок обновленный массив кукисов
57-
res.setHeader('Set-Cookie', cookies);
59+
res.setHeader('Set-Cookie', cookies_encode);
5860
};
5961
//Функция удаления кукиса
60-
result.delete = function (name) {
62+
req.cookies.delete = function (name) {
6163
this.set(name, '', -1);
6264
};
6365
//Значения расшифрованных кукисов
64-
result.parse = {};
66+
req.cookies.parse = {};
6567
if (req.headers.cookie) {
6668
//Парсим
67-
var cookies = req.headers.cookie.replace(/\ +/g, '').split(';');
68-
for (var key in cookies) {
69+
var cookies_encode = req.headers.cookie.replace(/\ +/g, '').split(';');
70+
for (var key in cookies_encode) {
6971
//пара ключ-значение
70-
var key_value = cookies[key].split('=');
71-
if (key_value[0] && key_value[1]) {
72-
result.parse[this.decode(key_value[0], this.config.password)] = this.decode(key_value[1], this.config.password);
72+
var name_value = cookies_encode[key].split('=');
73+
var name_encode = name_value[0];
74+
var value_encode = name_value[1];
75+
if (name_encode && value_encode) {
76+
var name_decode = this.decode(name_encode, this.config.password);
77+
var value_decode = this.decode(value_encode, this.config.password)
78+
req.cookies.parse[name_decode] = value_decode;
7379
};
7480
};
75-
//Менняем зашифрованное поле req.headers.cookie
7681
if (this.config.password) {
77-
var headers_cookie = [];
78-
for (var key in result.parse) {
79-
headers_cookie.push(key + '=' + result.parse[key]);
82+
//Расшифровываем req.headers.cookie
83+
var cookies_decode = [];
84+
for (var name_decode in req.cookies.parse) {
85+
cookies_decode.push(name_decode + '=' + req.cookies.parse[name_decode]);
8086
};
81-
req.headers.cookie = headers_cookie.join('; ');
87+
req.headers.cookie = cookies_decode.join('; ');
8288
}
8389
}
84-
return result;
8590
};
8691
};
8792
module.exports = function (config) {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "encode-decode-cookies",
3-
"version": "1.0.0",
3+
"version": "1.0.1",
44
"description": "Encoding-decoding for cookies",
55
"main": "index.js",
66
"scripts": {

0 commit comments

Comments
 (0)