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}`);
});
URLgetが得られると、このreq,res,nextは機能を生み出す.urlresであり、returnを含むテキストはreq.session.idである.
このsendURLといいます.では今から/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にセッションを保存する.セッションidexpressと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が同時に送信される.