geo*_*per 2 javascript authentication node.js express
我有一些关于登录和会话的问题.我有这个代码:
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);
}
Run Code Online (Sandbox Code Playgroud)
路线:
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');
}
}
}
Run Code Online (Sandbox Code Playgroud)
Auth中间件:
var auth = function (req, res, next) {
if (req.session.userdata && req.session.is_logged_in === true) {
next();
} else {
res.redirect('/');
}
}
Run Code Online (Sandbox Code Playgroud)
我使用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
}
Run Code Online (Sandbox Code Playgroud)
服务器将使用SSL.
提前致谢
乔治
在db查询代码中,检查req.body.email_login和req.body.password_login以确保它们不是null并且它们是字符串.有人可能会发送一个空响应,这会产生一个内部错误.
同样在路径中,您可能希望记录错误并将用户重定向到/500.html页面(内部错误):
if (err) {
console.log(error);
res.redirect('500');
} else ...
Run Code Online (Sandbox Code Playgroud)
你不应该在视图中这样做:
if(data.userid === session.userdata.id) { //The form where user can change his data contained within here }
Run Code Online (Sandbox Code Playgroud)
尝试在模型中实现这一点(最好),为它创建一个函数,并将一个参数传递给视图,如下所示:
res.render('view', { loggedIn: true });
Run Code Online (Sandbox Code Playgroud)
模型的功能:
function checkUser(id, session) {
return (userid === session.userdata.id);
}
...
module.exports.checkUser = checkUser;
Run Code Online (Sandbox Code Playgroud)
您可以通过这样的路线调用它(例如):
res.render('view', { loggedIn: model.checkUser(req.body.id, req.session); }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4909 次 |
| 最近记录: |