Jan*_*s F 6 javascript authentication node.js express
我一直在尝试在nodejs中开发一个相当简单的服务器.基本上,我要的是一个需要身份验证的简单API(简单的用户名/密码样式).我也没有需要的是任何类型的前端功能(模板等).我的问题是,我似乎无法理解快递/节点的方法.
具体来说,我的问题是:
app.use(express.bodyParser()))是如何工作的?难道他们改变的内容request或response对象?具体来说,如果我使用body解析器(内部强大?),我在哪里访问应该解析的请求数据?正如我之前提到的,我相信我的问题最终是节点中面向函数的方法的一个难点(同样,我在Web服务编程方面的经验相当有限).如果您知道我可以阅读如何构建nodejs应用程序的资源,请不要犹豫,请指出.
如何进行身份验证?我是否将多个处理程序传递到需要身份验证的每个路由中,或者是否有更优雅的方法来执行此操作?
您应该使用会话中间件。这是一些伪代码:
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 网站的文章。可以在这里找到。它的代码在这里。