У меня есть несколько вопросов относительно входа и сессий. У меня есть этот код:
Запрос в БД:
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');
}
}
}
Auth Middleware:
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
, где последний сегмент - это идентификатор пользователя, который используется для получения пользовательских данных.
И в этом представлении у меня есть форма для изменения пользовательских данных. Безопасно ли проверить, совпадает ли идентификатор пользователя с идентификатором пользователя сеанса, а затем показать форму?
На виде:
// 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.
Заранее спасибо
George