node.js - 我可以在提示中插入函数吗?
问题描述
我正在尝试为自己和几个朋友启动一个非常基本的聊天应用程序,并希望在加载网站时使用提示 + socket.emit 包括密码检查:
var username = prompt('password:');
socket.emit('password', password);
我想插入一个函数,根据我定义的答案检查他们的输入。像这样的东西:
var codeword = prompt('password:', function checkPrompt(password) {
if (prompt.password.length === 0) {
return false;
}
if (password.value !== answer.value) {
return false;
}
return true;
});
但是ERR_INVALID_ARG_TYPE(name, 'Function', value);
一旦我运行该应用程序,我就会得到。我该如何实施?
旁注:我知道这是非常不安全的。一旦我设置了数据库,我将实施真正的密码检查,但在那之前我只想要一个简单的占位符。
解决方案
prompt
是一种“阻塞”方法,因此不需要回调。当您不确定回调中的代码何时执行时,需要回调。这不是这里的情况。例如,您可以在do...while
循环中处理返回的结果。
带有静态密码检查的虚拟示例:
// We will keep the user in the loop until the password is correct...
do {
var password = prompt('Password:');
} while (password !== 'abcd');
// At this point we know the password was correct.
alert('Password was correct!');
具有专用身份验证方法的虚拟示例:
function authenticate(username, password) {
if (username == 'john' && password == 'abcd') {
return true;
}
return false;
}
// We will keep the user in the loop until the password is correct...
do {
var username = prompt('Username:');
var password = prompt('Password:');
var loginSuccessful = authenticate(username, password);
} while (!loginSuccessful);
// At this point we know the password was correct.
alert('Password was correct!');
从安全的角度来看,只有在服务器端拥有身份验证逻辑才有意义,因此您很可能希望从上述authenticate
函数中进行 AJAX 调用(例如使用 Fetch API 或jQuery.post
- 如果您'正在使用 jQuery)。然后该方法将返回true
或false
基于服务器端调用的响应。
推荐阅读
- css - 为什么我的 SVG 的radialGradient 不在基于 Chrome 的浏览器中显示,但在 Firefox 中显示?
- python - 只能手动调用pycharm.sh启动Pycharm
- nginx - Nginx 使用自定义域名
- python - 在张量流中改变形状
- javascript - 在个人网站上显示交互式可视化
- android - 我需要从 Kotlin 上的片段更新我的 DrawerLayout
- r-markdown - RMarkdown 更改作者和标题的顺序
- javascript - DNI 根据登录页面显示 div,继续显示 div 整个会话
- javascript - Discord.JS 向标记的用户发送消息
- java - 重用项目反应器发布者 Flux/Mono 是否被认为是最佳实践?