- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 bcrypt 模块比较我的登录系统的密码,但它似乎不起作用。一旦我将数据提交到表单中,我就会得到 {"message":"Internal Server Error"} (我已定义)。我做错了什么?
这是 auth-controller.js:
var mysqlConnection = require ('../config');
const bcrypt = require ('bcrypt');
module.exports.auth = async function (req, res) {
var password = req.body.password
var email = req.body.email
console.log(email, password);
let pwComparison
try {
//Check the password
pwComparison = await pwCompare(password)
//Compare the hashed password
password = await bcrypt.compare(password,results)
} catch (e) {
return res.status(500).json({message: 'Internal Server Error'})
}
if (pwComparison) {
res.redirect('/')
}
async function pwCompare(password) {
let query = `SELECT password FROM users where password = ${password}`
return new Promise((resolve,reject)=> {
mysqlConnection.query(query, function(error,results) {
if (error) {
return reject (error)
}
return resolve(results)
})
})
}}
最佳答案
您不应该查询密码,而应该查询用户。您的数据库中的密码可能是加密的,因此来自客户端的值永远不会匹配。我猜您正在尝试将 null 与字符串进行比较,这可能是您的错误的来源。但是,记录错误对您很有帮助,因此您肯定会知道。
尝试这个:
module.exports.auth = async function (req, res) {
const password = req.body.password
const email = req.body.email
console.log(email);
let user = null;
let isMatch = false;
try {
//Check the password
user = await getUserByEmail(email)
//Compare the hashed password
isMatch = await bcrypt.compare(password, user.password)
} catch (e) {
return res.status(500).json({message: 'Internal Server Error'})
}
if (isMatch) {
req.user = user;
res.redirect('/');
}
async function getUserByEmail(email) {
let query = "SELECT password FROM users where email = ? LIMIT 1";
return new Promise((resolve,reject)=> {
mysqlConnection.query(query, [email], function(error,results) {
if (error) {
return reject (error)
}
if (results.length == 1)
return resolve(results[0])
else
return resolve(null)
});
})
}}
reject()
我把这个决定留给你,而不是一个空结果。
关于node.js - pw哈希比较nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53818253/
我正在使用 GIT_REPO_URL="https://$GIT_ACCOUNT:$USER_PW@github.com/XXXX/xxx" 语法。 最近我更改了密码以@结尾。 例如我的密码是1234
我有一个简单的应用,允许用户通过 Auth 方法注册到 Firebase。这是我的代码: public class SignUpActivity extends AppCompatActivity {
sprintf(xBuffer,"%l",rootCause) rootCause 是 unsigned long bad_printf_format_string:invalid format st
即使我多次运行该程序,我也只尝试打印一次 pw.println 语句。有什么解决办法吗? public static void main(String[] args) throws IOExcepti
我在网上找到了一些说明,但遇到了错误: 在此之后 - Setting the MySQL root user password on OS X 我跑了 sudo mysqld_safe --skip-
如何在 C++ 中将字符串分配给 char *pw 喜欢... char *pw = 一些字符串 ?? 最佳答案 对于常量初始化,你可以简单地使用 const char *pw = "mypasswo
我陷入了一些烦人的境地。 在我的桌面和生产服务器之间有一个机器链。像这样的东西: desktop -> firewall 1 -> firewall 2 -> prod_box 1
我正在关注位于此处的 MSDN 文章:http://msdn.microsoft.com/en-us/library/aa302398.aspx 我的困惑在于函数: private static st
您好,我对数据库的“用户”和从数据库访问其详细信息的企业“客户”感到困惑。 我正在构建一个网络,客户可以在其中登录并访问他们的银行余额、对账单、直接借记等(银行应用程序)。我的 SQL 数据库将有一个
我有一个将用户添加到 Linux 系统的脚本。我打算有一个步骤将根 pw 设置为默认值,但是如果脚本中没有明文形式的 pw,我该如何做到这一点? 最佳答案 查看联机帮助页中的 usermod 选项“-
我正在编写一个 bash 脚本来自动执行 gpg 解密过程。该脚本将密码作为其参数之一。我需要找到一种方法,当我在脚本中运行gpg解密时,脚本会自动执行输入密码的提示。 最佳答案 我会使用 read
我在 C++ 中做了一个密码验证器程序,它基本上将一个字符串传递作为输入,然后另一个字符串验证以确认它是正确的,最后检查输入的字符串是否正确格式与否。假设字符串的长度大于 6 且小于 20 个字符,则
我目前正在尝试理解哈希和盐。据我了解,如果我只有密码和生成的哈希值(这是用随机盐生成的),就不可能验证密码。如果我不加盐,PHP 中的password_verify 函数如何验证我的密码?后台是否有一
我是 MYSQL 和 JSP 的新手。我正在尝试检查 mysql 数据库和 jsp 之间的连接。当我在服务器上运行该项目时,它抛出异常。我找不到代码上的错误。 我在mysql上创建了oop数据库,UN
我发布了一个 php 文件,我刚刚意识到它包含连接到 mysql 数据库的密码,以 mysqli_connect 的形式。我现在容易受到攻击吗? 最佳答案 是的,立即更改密码。 关于php - 如果我
我和这个人有完全相同的问题:Tomcat 7 Manager - how to authenticate? 我使用的是 Windows,我下载了适用于 Windows 的 Tomcat 7.0.39
我有一个问题,我可以在 node-bcrypt 和passport.js 中创建散列密码,但无法使用散列密码。 我使用 nodejs、express、mongodb、mongoose、passport
我正在努力启动 jupyterhub,以有限的 sudo 权限运行,没有 root 权限。如果我理解正确的话,这使得在共享系统上以真实系统用户身份运行笔记本服务器成为可能,而无需以 root 身份运行
重置root密码后可以毫无问题地连接mysql数据库: C:\\> C:\mysql\bin\mysqld-nt --init-file=C:\\\\mysql-init.txt 其中 mysql-i
所以我有一个连接到 ejabberd 服务器的小 JavaScript/Strophejs xmpp 客户端。到目前为止,我已经在 ejabberd 网络管理员中创建了用户,例如我创建了用户 a@te
我是一名优秀的程序员,十分优秀!