Professional Documents
Culture Documents
cookiesessionጱֵ݊ڦ܄አ
ռಅޮᎣ҅HTTP ฎӞӻ෫ᇫா҅ᦓܐಅզਮಁᒒྯེ᧗ڊݎ҅ӥӞེ᧗෫ဩᎣӤӞེ
᧗ಅ۱ތጱᇫாහഝ҅ই֜ᚆӞӻአಁጱᇫாහഝىᘶ᩸ޫҘ
cookie
ḒضԾኞԧ cookie ᬯᳪದᥴ٬ᬯӻᳯ᷌҅cookie ฎ http ᦓܐጱӞ᮱҅ړਙጱ॒ቘړԅইӥ
ྍپғ
๐ݻۓਮಁᒒݎᭆ cookie̶
᭗ଉֵአ HTTP ᦓܐᥢਧጱ set-cookie १̶֢
ᥢᥢਧ cookie ጱ໒ୗԅ name = value ໒ୗ҅Ӭᶳ۱ތᬯ᮱̶ړ
ၨᥦਖ਼ cookie ̶ਂכ
ྯེ᧗ၨᥦ᮷տਖ਼ cookie ݻݎ๐̶ۓ
ٌ՜ݢᭌጱ cookie ݇හտߥਖ਼ cookie ݎᭆᕳ๐ۓᒒጱᬦᑕ҅Ԇᥝํզӥپᐿғ
express Ӿጱ cookie
session
cookie ᡱᆐஉො֕҅ฎֵአ cookie ํӞӻஉय़ጱ୕ᒒ҅cookie Ӿጱಅํහഝࣁਮಁᒒ੪ݢզ
ᤩץද҅හഝᶋଉฃᤩ։᭜҅ᮎԍӞԶ᯿ᥝጱහഝ੪ӧᚆਂනࣁ cookie Ӿԧ҅ᘒӬইຎ
cookie Ӿහഝਁྦྷॡग़տߥփᬌපሲ̶ԅԧᥴ٬ᬯԶᳯ᷌҅੪Ծኞԧ session҅session Ӿጱ
හഝฎכኸࣁ๐ۓᒒጱ̶
1҂ ࣁٖਂӾਂ ؙsession
// ༄ັ session Ӿጱ isVisit ਁྦྷ
// ইຎਂࣁڞीےӞེ҅ڞވԅ session ᦡᗝ isVisit ਁྦྷ҅ଚڡত۸ԅ 1̶
if(req.session.isVisit) {
req.session.isVisit++;
res.send('
');
} else {
req.session.isVisit = 1;
res.send("ཻᬨᒫӞེᬯ᯾");
console.log(req.session);
}
});
```
2҂ ࣁ redis Ӿਂ ؙsession
app.use(session({
// ই֦ӧమֵአ redis ᘒమᥝֵአ memcached ጱᦾ҅դᎱදۖԞӧտ᩻ᬦ 5 ᤈ̶
// ᬯԶ store ᮷᭽፳ᕹӞጱളٿ҅ݗฎਫሿԧᮎԶളݗጱପ҅᮷ݢզ֢ԅ session ጱ store ֵ
አ҅ྲই᮷ᵱᥝਫሿ .get(keyString) .set(keyString, value) ොဩ̶
// ᖫٟᛔ૩ጱ store Ԟஉᓌܔ
store: new redisStore(),
secret: 'somesecrettoken'
}));
app.get('/', function (req, res) {
if(req.session.isVisit) {
req.session.isVisit++;
res.send('
');
} else {
req.session.isVisit = 1;
res.send('ཻᬨᒫӞེᬯ᯾');
}
});
```
ݱᐿਂؙጱ୕ڥ
ٌӾ҅ݎሾहਂٖਂ੪অԧ̶ӞᛱጱੜᑕଧԅԧԪ҅ইຎӧၿ݊ᇫாوՁጱᳯ᷌҅አٖਂ
session Ԟဌᳯ̶ٖ᷌֕ਂ session ᴻԧԪԏक़҅ဌํڦጱঅ̶॒
හഝପ session̶ᴻᶋ֦உᆧఀᬯӞࣘ҅Ꭳ᭲ᛔ૩ᥝՋԍ҅ڞވᬮฎᘌᘌਫਫአᖨਂ̶މ
signedCookie
Ӥᶎ᮷ฎᦖचᏐ҅ሿࣁᦖӞԶӫӱᅩጱ̶
Ӥᶎํک
{dotcom_user: 'alsotang'}
ᬯጱ̶
{
dotcom_user: 'alsotang',
'dotcom_user.sig': '4850a42e3bc0d39c978770392cbd8dc2923e3d1d',
}
cookie-session
ӧᬦ cookie-session ౯ӻՈୌᦓӧᥝֵአ҅ํࢧکݑනධڋጱܧᴾ̶
session cookie
ଉᥠጱ࣋ว੪ฎࣁݎአಁጭᴭᇫாכ೮̶
ྲইํᬯӞӻአಁ
ጭᴭጱ༄ḵᬦᑕ։դᎱইӥғ
if (req.session.user) {
// ឴ ݐuser ଚᬰᤈӥӞྍ
next()
} else if (req.signedCookies['username']) {
// ইຎਂࣁڞහഝପӾ឴ݐᬯӻ username ጱ҅௳מଚ کਂכsession Ӿ
getuser(function (err, user) {
req.session.user = user;
next();
});
} else {
// ୮؉ԅጭᴭአಁ॒ቘ
next();
}