了解如何使用NodeJS创建一个简单的后端

Jan*_*s F 6 javascript authentication node.js express

我一直在尝试在nodejs中开发一个相当简单的服务器.基本上,我要的是一个需要身份验证的简单API(简单的用户名/密码样式).我也没有需要的是任何类型的前端功能(模板等).我的问题是,我似乎无法理解快递/节点的方法.

具体来说,我的问题是:

  • 如何连接身份验证?我是否将几个处理程序传递到需要身份验证的每个路由中,或者是否有更优雅的方法来执行此操作?
  • Express中间件(如app.use(express.bodyParser()))是如何工作的?难道他们改变的内容requestresponse对象?具体来说,如果我使用body解析器(内部强大?),我在哪里访问应该解析的请求数据?
  • 当使用身份验证时,我有一个存储在数据库中的凭据,其中包含有关各个客户端关联的更多信息,我在什么时候提取该信息?即,当用户登录时,我是否在登录时获取用户记录并将其传递,或者我是否在每个需要该信息的处理程序中获取它?
  • 最后,你知道一个我可以看一下的开源应用程序吗?我希望看到一些具有简单身份验证的东西,甚至可能使用强大的功能,因为上传文件是我的要求之一.

正如我之前提到的,我相信我的问题最终是节点中面向函数的方法的一个难点(同样,我在Web服务编程方面的经验相当有限).如果您知道我可以阅读如何构建nodejs应用程序的资源,请不要犹豫,请指出.

Kra*_*mir 4

如何进行身份验证?我是否将多个处理程序传递到需要身份验证的每个路由中,或者是否有更优雅的方法来执行此操作?

您应该使用会话中间件。这是一些伪代码:

var http = require('http');
var app = express();

var authorize = function(req, res, next) {
    if(req.session && req.session.appname && req.session.appname === true) {
        // redirect to login page
        return;
    }
    next();
}

app.use(express.session());
app.all('/admin*', authorize, function(req, res, next) {

});
Run Code Online (Sandbox Code Playgroud)

Express 中间件(如 app.use(express.bodyParser()))如何工作?它们会改变请求或响应对象的内容吗?具体来说,如果我使用主体解析器(内部强大?),我在哪里访问应该解析的请求数据?

每个中间件都可以访问请求和响应对象。所以,是的,它修改了它。通常将属性附加到它。这意味着在您的处理程序(也是一个中间件)中您可以编写:

if(req.body && req.body.formsubmitted && req.body.formsubmitted === 'yes') {
    var data = {
        title: req.body.title,
        text: req.body.text,
        type: req.body.type
    }
    // store the data
}
Run Code Online (Sandbox Code Playgroud)

当使用身份验证时,例如,我将凭证存储在数据库中,其中包含有关关联的单个客户端的更多信息,我在什么时候提取该信息?即,当用户登录时,我是在登录时获取用户记录并将其传递,还是在每个需要该信息的处理程序中获取它?

我认为您应该以与任何其他服务器端语言相同的方式执行这些操作。将用户的状态(已登录/未登录)保留在会话内。您还可以保留用户的 ID 并为他获取您需要的任何数据。这取决于您的情况,但您有能力缓存信息。因为 Node 不像 PHP,所以我的意思是它并没有消亡。

最后,您知道我可以看一下的开源应用程序吗?我希望看到具有简单身份验证甚至可能使用强大功能的东西,因为上传文件是我的要求之一。

是的。我写了一篇关于带有管理面板的非常简单的 MVC 网站的文章。可以在这里找到。它的代码在这里