如何在主干和快车中保持安静的路线?

如何在我的应用程序中保护我的快速“GET”路线,以便电子邮件和用户数据不会暴露给未经授权的客户端。 我想知道,我应该像密码那样对所有字段进行哈希处理?

我的GET“/用户”路线发送这样的JSON ..

{ "name": "keven", "email": "keveng@gmail.com", "user": "keven", "password": "EEOnGFritH1631671dc8da7431399f824b3925a49e", "country": "America", "date": "April 20th 2013, 10:34:22 pm", "_id": "5173502e5g52676c1b000001" } 

在我的骨干和节点/expression应用程序,我有我的骨干收集url,像这样..

 Users = Backbone.Collection.extend({ model: User, url: '/users', }); 

而高速路线是这样的:

 app.get('/users', function(req, res){ User.find({}, function (err, accounts) { res.send(accounts); }); }); 

谢谢。

虽然这并不理想,但是如果用户和密码与每个请求一起发送,那么只需要一些中间件就可以在您的node.js应用程序中执行authentication和授权。

authenticationfunction:

 function authenticate(user, password, fn) { // Trivial, but not recommended User.findOne({user: user, password: password}, function (err, user) { if (err) { return fn(err); } if (!user) { return fn(new Error('no such user')); } return fn(null, user); }); } 

一个授权中间件function,依靠authentication:

 function authorize(req, res, next) { authenticate(req.params.user, req.params.password, function(err, user) { if (err) { res.redirect('/login'); } // Probably other logic her to determine now *what* they can do return next(null, user); }); } 

现在,由于您使用的是Express,因此您可以使用路由中的授权中间件来限制访问:

 app.get('/users', authorize, function(req, res){ // Can only get here if allowed User.find({}, function (err, accounts) { res.send(accounts); }); }); 

但请注意,这将是执行每个请求的用户search – 我说这不理想的原因之一。 为了正确的系统安全性devise,您应该考虑使用http基本authentication和基于会话的cookie或oauth。

以下是一些链接,供您检查:

  • 用于骨干的HTTP基本authentication
  • Express的HTTP基本身份validation
  • 快速authentication示例