ほとんどのアプリユーザーと同じように登録し、そのデータはMongooseを使用してMongoDBのユーザー文書に保存されます。EJSのページレンダリングでユーザーデータにアクセスする正しい方法
ここで重要なことは、Node.js &を使用して、EJS Temptingエンジンを使用して各ルート内にページをレンダリングすることです。レンダリングページの
アン例:
app.get('/profile',isLoggedIn,function(req, res) {
res.render('profile.ejs', {
user: req.user
});
});
今、あなたは、Imは私のテンプレートに、ユーザーオブジェクトを渡し、その後、ユーザがLOGGEDIN &であるかどうかをチェックすることは、上記のコードで見ることができます。ユーザーオブジェクトには、サインインしたユーザーのユーザードキュメント全体が含まれます。私は、ユーザオブジェクト使用方法
:ユーザアクセスプロフィールは、私が署名したユーザーにアクセスするためにuser: req.user
オブジェクトを使用する場合、フロントエンドで
はID
文書化し、私は関連情報を取得するだろうと使用しますそのユーザーに送信します。例えば
:
:- ユーザーIDでログインに一致するすべてのコメントは、それのユーザーIDでログインし
相続人の例に一致するすべての記事をゲット
<body ng-init="getUserPosts('<%= user._id %>')"></body>
上記は完全に機能します同じテクニックを何度もSE、残業、私は、ユーザーが例えば、IDは、そのユーザーアカウントに、そのユーザーまたはポストに関連するデータを取得する必要があります。
<button ng-click="savePost('<%= user._id %>')">Send</button>
上記は常にある特定のIDを持つユーザーを(見つけましたloggedInユーザ)は自分のアカウントに投稿を保存します。
問題:
今、私のコードは完璧に動作、私は何の問題もなかったしているが、私は私がユーザーIDをはっきりと見ることができる任意のブラウザ内の要素に私のページを閲覧するときということに気づきました。以下は、私が何を意味するかを理解するための画像は、次のとおりです。
今、私は唯一のLOGGEDINユーザーのみが自分のIDを見ることができるということを理解しています。しかし、これは正しい方法ですか?これは有害なのでしょうか?これをどのように改善できますか?
私が遭遇した1つの方法は、オブジェクトのユーザーの「_id」を除外し、暗号化された値を送信することです。サーバが暗号化された '_id'を受信すると、サーバはそれを復号化してから通常通り処理を進めます。これは、真の '_id'がユーザに露出されないことを意味します。ユーザは、他の場所でそれを破損する可能性があります。 –
'
@JoeClayコメントをいただきありがとうございます。現在のところ、私が行う唯一のチェックは、ユーザーがloggedInされたユーザーであるかどうかを確認することです。他に何をお勧めしますか?または、これとはまったく異なる方法ですか? – Skywalker