Sessions and Cookies #02
サーバを保存して再起動すると、結果が表示されます。
セッションはすべて消えます.
express
はセッションをメモリに格納するためです.したがって、サーバを再起動するたびにセッションは消えます.サーバーはずっと忘れています.
fake DB
が作成されたときのように、セッションもそうなっています.後で、セッションを
mongoDB
に接続して、バックエンドを忘れないようにします.コードを保存するたびに、サーバはセッションを忘れてしまいます.
次に、バックエンドでCookieを使用してブラウザを区別する方法を見てみましょう.
前のセクションでは、バックエンドがブラウザに理解できないテキストを送信しているのを見ました.
しかし、このテキストは、セッション
id
としてバックグラウンドで使用される.DB
が生成され、セッションをバックエンドのメモリに格納できます.バックエンドの各セッションには
id
があり、ブラウザに送信されます.その後、ブラウザは、要求を送信するたびに
id
に送信する.ブラウザに一致するセッションと、他のブラウザに一致するセッションが表示されます.
ブラウザによってクッキーが違うからです.
要約すると、セッションおよびセッション
id
は、ブラウザを記憶する方法の1つである.また、ブラウザとバックエンドの間には
id
のような接続はありません.要求がバックエンドに送信されるたびに、
WIFI
が同時に送信される.バックエンドは覚えられるまた、セッション
id
を持っている場合は、セッションid
に情報を追加できます.リフレッシュすると、現在のバックエンド登録のセッション数は
object
であることがわかります.さらにリフレッシュすると2つ見えてきます.セッションを保存できる
console.log
ができましたすなわち、
DB
に情報を入れることができる.セッションに情報を追加できます.例えば、数字やユーザの
DB
などの情報を加えることができる.あなたが望むすべての情報に参加することができますが、このセッションでしか共有できません.
今回はすぐにidを作ってみました。
app.get("/add-one", (req, res, next) => {
return res.send(`${req.session.id}`);
});
URL
でget
が得られると、このreq,res,next
は機能を生み出す.url
はres
であり、return
を含むテキストはreq.session.id
である.この
send
をURL
といいます.では今から/add-one
に行きましょうご覧のように、セッション
/add-one
.他のブラウザでも表示できます.別のセッションid
が表示されています.異なる
id
が現れた.各ブラウザは、異なるセッションid
を有するテキストを送信する.私が言ったように、このセッション
id
はCookieにも存在します.これは偶然だけではありません.前に見たように、本当に簡単です.サーバはブラウザ
id
セッションを実行しています.また、ブラウザはリクエストを発行するたびに、クッキーから
id
セッションを取得する.これにより、サーバはそのセッション
id
を読み取り、誰であるかを知ることができる.どんなブラウザなのか知ることもできます.もう一つやりたいことがあります.ここでカウンタを作成します(
id
).app.get("/add-one", (req, res, next) => {
req.session.potato += 1;
return res.send(`${req.session.id}`);
});
ここでの会話はcounter
です.その名の通りjavascript object
です.{
cookie: { originalMaxAge: null, expires: null, httpOnly: true, path: '/' }
},
また、異なるブラウザでもjavascript object
の違いが見られました.では、いくつかの情報を
req.session.id
に入れる.javascript object
と書いてあり、req.session
が追加されています.potato
にはpotato
と書いてあります.セッション+ = 1
にはobject
が作成されている.では、会話の
potato
に1を加えるとどのように現れるかを見てみましょう.更新に示すように、
potato
が変更されました.コードを保存するたびにサーバが破棄して再作成するからです.
この問題は心配しないでください.後で実際の
id
に接続されます.まず今会話が消えてDB
を送信します.app.get("/add-one", (req, res, next) => {
req.session.potato += 1;
return res.send(`${req.session.id}\n${req.session.potato}`);
});
何が現れるか見てみましょう.ご覧のように、リフレッシュ後にreq.session.potato
が表示されます.今から更新します.リフレッシュするたびにカウンタが山積みになります.
コンソールでは、
NaN(Not a Number)
でリフレッシュされた数のセッションがあります.他のブラウザでもリフレッシュされたデジタルセッションがあります.ご覧のように、バックエンドはブラウザ
potato
に提供されています.ブラウザがサーバ上のすべての
id
にアクセスすると、ブラウザが受信した
/add-one..
は、要求に送信される.このすべては私が見てやります.ブラウザへのURLをリクエストに送信していることを覚えておいてください。
バックエンドに要求を送信するたびに、送信データの
id
が一緒に送信される.これにより、バックエンドセッション
id
のうちid
を有するセッションが検索される.その後、そのセッションに情報を含めることができます.では、プレイヤー情報を覚えることができます.
ユーザーのセッションに情報を追加することもできます.プレイヤーが誰なのかはまだ分からない.
知っているのは
DB
で、反対側は何度かリフレッシュして、反対側のid
何度も更新したここで再度ホームページにアクセスします.ブラウザからWebサイトにアクセスするたびに、セッションが発生します.
もしあったら.
app.use(
session({
secret: "Hello!",
resave: true,
saveUninitialized: true,
})
);
potato
は、ブラウザのセッションpotato
を作成し、ブラウザに送信する.自分で処理します.その後、ブラウザはセッション
middelware
をCookieに保存する.express
はまた、セッションid
にセッションを保存する.セッションid
のexpress
とCookieつまり、ある
DB
は同じです.その後ブラウザに送信し、DB
セッションをCookieに保存します.ブラウザが
id
のすべてのid
に要求を送信するたびに、セッションid
が要求とともに送信される.これにより、バックエンドからどのユーザーがどのブラウザでリクエストを送信したかを知ることができます.
例えば、家に帰った人に
localhost:4000
枚のカードを渡すのと同じです.私はずっとあなたの顔を忘れてしまうので、家に帰るたびに
url
枚のカードを提示します.マスクをしていると忘れてしまうかもしれないので.
しかし、私はやはりあの人たちが仮面をかぶっておしゃれをしていると仮定します.
とにかく誰が入ってきたのか知っておく必要があるので、
id
カードをください.今度家に帰りたいならid
カードを持ってくるように彼に言った.どうやってマスクをして来たのですか.それらにかかわらず.
id
枚のカードを持っているからです.id
カードを持っていれば、作成したid
の中から名前を見つけて、彼の名前で挨拶することができます.今ブラウザでやっているのはこれです.
ブラウザがバックエンド
id
にアクセスするたびに提示するid
カードです.Cookieはこのようなことを処理できるので、とてもいいです.プレイヤーたちは何もしていません.
プレイヤーにクッキーをあげると、プレイヤーはウェブサイトにアクセスするたびに、自分でクッキーを送信します.
ご覧のように、プレイヤーを区別するのは本当にいいです.
例えば、ブラウザでは、
id DB
が30であることを覚えておいて、他のブラウザではurl
が30であることを覚えておいてください.8だとわかるこれはすべて会話
id
のために可能です.この
potato
がブラウザに送信され、要求が発行されるたびにpotato
が同時に送信される.Reference
この問題について(Sessions and Cookies #02), 我々は、より多くの情報をここで見つけました https://velog.io/@0_cyberlover_0/Sessions-and-Cookies-02テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol