gpt4 book ai didi

Node.js + Express.js + Passport.js - 我需要一些如何构建它们的建议

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:35 25 4
gpt4 key购买 nike

我找到了关于 Node.js + Express.js + Passport.js 的教程 tutorial on scotch.io

我需要一些建议。

1) 本地注册检查输入数据

在此示例中,没有检查用于登录或注册的输入数据,例如检查电子邮件是否为空或无效,或者添加验证码控件,因​​此,如果我需要添加它们更好的位置在哪里?

在passport.js里面?

在routes.js里面?

在其他文件中?

2) 注册 POST 和 GET

在此示例中,我有两条路线,一条用于呈现表单的 GET,一条用于处理表单提交的 POST。

我想,如果出现错误,渲染带有错误消息的表单,而且所有输入文本都填充了输入的数据。

如果我检查 POST 路由中的输入数据,当我重定向到 GET 路由时,我需要传递所有错误消息以及提交的值。

我用 req.flash 做到这一点?

在同一个函数中处理 GET 和 POST 更好吗?

还有另一种(更好的)方法吗?

感谢大家的建议和帮助

最佳答案

要回答问题1),由于您所说的额外表单验证不是 Passport 流程的一部分,我建议将其保留在自己的中间件中,与config分开/passport.js。您可以定义类似于已经存在的 isLoggedIn 帮助器的函数。像这样:

function validateSignup(req, res, next) {
// Perform your field validation and/or CAPTCHA checking here
if (!verifyCaptcha(req.body)) {
return res.status(401).end();
}
next();
}

app.post('/signup', validateSignup, passport.authenticate('local-signup', {
successRedirect : '/profile', // redirect to the secure profile section
failureRedirect : '/signup', // redirect back to the signup page if there is an error
failureFlash : true // allow flash messages
}));

对于 2) 及以上,

i'd like, i case of error, render the form with error message, but also with all input text filled with the entered data.

我认为实现此目的的简单方法是将您的注册/登录 POST 作为 AJAX 请求发出,而不是进行传统的表单提交,并让您的 POST 路由返回 JSON 结果而不是呈现 HTML 页面。这样您的页面就不会刷新,并且您的表单值将保持原样。粗略地说,使用 jQuery,您的客户端代码可能如下所示:

$("#signup-form").submit(function(e){
// Prevents your form from submitting as usual
e.preventDefault();

$.post('/signup', $('#theform').serialize())
.done(function() {
// Success! Navigate to home page
})
.fail(function(jqXHR, textStatus, errorThrown) {
// Show error in UI
});
});

要突出显示 UI 中的表单错误,那就完全是另一回事了,具体取决于您使用的框架。例如,如果您使用 bootstrap,我会推荐 bootstrapValidator .

is better handle GET and POST in the same function?

不,我肯定会把这些路线分开。此外,如果您确实选择遵循上面的 AJAX 建议,我发现如果我将 HTML 服务路由组织在与 JSON 路由不同的路径下会更容易。例如,如果我有一个显示注册页面的 signup 路由,以及一个用于发布注册表单的 JSON 端点,我会这样组织它:

获取/注册

POST/api/signup

关于Node.js + Express.js + Passport.js - 我需要一些如何构建它们的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30015325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com