Logged In User #01
今度はプレイヤーを覚えられるものを作ります。
誰がログインしたのかということです.しかし、実際には、覚えているとは言えないかもしれません.
私が今日何かを学んだことを覚えているので、寝てしまいました.
そしてまた起きたら、あなたが学んだことを覚えています.携帯番号を覚えているようです.
寝て起きても、携帯番号を覚えているように.
しかし、サーバはそうはできません.サーバには、すべてのリクエストの
id
が必要です.これらは覚えられないので、例えば、「あなたの携帯番号は何ですか」と言う人がいます.君に聞いたことがある.
誰が
id
カードを受け取ったのか分からないなら、「これはあなたの携帯番号ですね.」表示されます.そして寝て立ち上がり携帯番号を聞くと
「お前は誰だ?」
id
カードがあれば携帯番号を教えてください.わかってるよだから誰も覚えていない.
id
の情報を持つid
を作成し、もし誰かがDB
カードを持って私を探しに来たら、その時になってから確認します.だから覚えているとは言い難い.1秒ごとに忘れた人と会話するように.
それがサーバーです.
今ここに
id
会話があります._LJRIAPlxO7fUVAYnBkjUDGQgdzvap0E: {
cookie: { originalMaxAge: null, expires: null, httpOnly: true, path: '/' }
},
DB
に行くんだユーザーがログインすると、そのユーザーに関する情報がセッションにロードされます.
const ok = await bcrypt.compare(password, user.password);
if (!ok) {
return res.status(400).render("login", {
pageTitle,
errorMessage: "Wrong password",
});
}
req.session.loggedIn = true;
req.session.user = user;
return res.redirect("/");
};
そして、プレイヤーごとに異なるuserController
があるのを覚えています.人によって異なる
req.session object
があるからです.id
と書いてあります.次いで、
req.session.loggedIn = true
は、req.session.user
において見出されたDB
を使用する.これにより、セッションに情報を追加できます.
ブラウザごとに異なるセッションがあったのを覚えています。
すべてのブラウザに同じセッションがあるわけではありません.すべて違います.
セッション
user
がセッションloggedIn
に追加され、true
がセッションに保存されます.更新後は
user
へ.セッションlogin
を表示してログインします.ご覧のように
DB
に変更はありませんが、セッションtemplate
を表示するとCookie DB
になります.id
が見えます.id
はloggedIn
で、true
もあります.今から
user
に行って、Home
に着きます.Search
に行きました.再び
Upload Video
へ向かいます.Home
を見て、このようにスクリーンを移動するたびに楽屋は私がログインしたことを知っています.他のブラウザを試してみることもできます.
別のブラウザから
Search
まで、2つのセッションが表示されます.ログインしているプレイヤーと、ログインしていないプレイヤーがいます.
誰が登録したのかわかる
これに基づいて
Search
を修正します.template
がsession.loggedIn
ならtrue
とJoin
を区別します.しかし、Login
を見せてあげます.次に、テンプレートがセッションにアクセスできるかどうかを確認します.
Logout
からbody
header
h1=pageTitle
nav
ul
li
a(href="/") Home
if !req.session.loggedIn
li
a(href="/join") Join
li
a(href="/login") Login
li
a(href="/search") Search
li
a(href="/videos/upload") Upload Video
base.pug
でなければ、loggedIn
とJoin
が見えます.Login
からbase.pug
に近づくかどうか見てみましょう.新たな侵害であればだめです.別の方法で大丈夫です
誰が
req.session.loggedIn
なのか分かるので、ここのセッションuser
で.user: {
_id: '625942ace3564e09811a5f21',
email: '[email protected]',
username: 'Cyber Lover',
password: '$2b$05$WMO/VH/yctvvPJST0SyLq.QRQfSNeLJ5zAJPFfRMwLgg5ZFq1KtBm',
name: 'Mercury',
location: 'NYC',
__v: 0
}
つまり、誰がプレイヤーなのかは分かるが、DB
テンプレートと共有することはできない.これを共有できるはずです.これは次の部分でやりましょう
重要なのは、どのような問題が発生したのかを理解し理解することです.
pug
は情報を格納している.ユーザーログイン成功Noどうでもいい.
req.session object
およびloggedIn
が追加された任意の情報を追加できます.もう2つのセッションがあります.1つはログインしたセッションで、もう1つはログインしていないセッションです.
Reference
この問題について(Logged In User #01), 我々は、より多くの情報をここで見つけました https://velog.io/@0_cyberlover_0/Logged-In-User-01テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol