ログインとセッションに関する質問があります。私はこのコードを持っている:Expressjs認証
DBクエリ:
login: function(req,callback) {
var query = 'SELECT id FROM users WHERE email = "' + req.body.email_login + '" AND password = "' + hashlib.sha1(req.body.password_login) + '" LIMIT 1';
client.query(query, callback);
}
ルート:
app.post('/login', function(req, res, next) {
users.login(req,function(err, results) {
if (err) {
res.render('index');
} else if (results[0]) {
req.session.userdata = results[0];
req.session.is_logged_in = true;
res.render('site/news');
}
}
}
認証ミドルウェア:
var auth = function (req, res, next) {
if (req.session.userdata && req.session.is_logged_in === true) {
next();
} else {
res.redirect('/');
}
}
セッション用にdb storeを使用しています。
今私の質問は以下のとおりです。
1)これはそれを行うための安全な方法ですか?それとも何か他の方法でやってみるべきですか?
2)このURLは/domain/users/1
です。ここで、最後のセグメントはユーザーデータを取得するために使用されるユーザーIDです。 このビューには、ユーザーデータを変更するためのフォームがあります。ユーザーIDがセッションユーザーIDと一致するかどうかを確認してからフォームを表示するのは安全ですか?ビューで
:
// e.g. get the session.id from dynamichelper
if (data.userid === session.userdata.id) {
// The form where user can change his data contained within here
}
は、サーバーがSSLを使用する予定です。 DBクエリのコードでは、事前に
おかげ
ジョージ
こんにちはで見たいと思うかもしれません。 )OK、良いアドバイスが、私は確かに私は一つのことを把握していない、なぜ私はビューのIDを確認しないでください?それはどうやって見えるだろう?小さな例かもしれない? – georgesamper
これを行うことができます。これはちょっとアドバイスされています。ヘルパー、モデルなど、このような種類のものを他の構造にすることができます。ここで例を追加します。 – alessioalex
いくつかの小さな例で私の回答を編集しました。 – alessioalex