node.js - 如何在节点 js 中使用 Salt Hashing 实现用户身份验证
问题描述
我正在尝试为节点 js 中的用户注册实现盐哈希。用户登录需要访问存储的盐值。但我现在面临的挑战是:如何安全地存储盐值?
我也愿意更好地实施身份验证过程。谢谢
解决方案
这是您可以按照注册的示例。
import bcrypt from 'bcryptjs';
export const insertUserAsOwner = async (addOwnerDto) => {
const tempPassword = generateRandomString(8);
const hashedPassword = await bcrypt.hash(tempPassword, bcrypt.genSaltSync(10));
const user = new Users();
user.firstName = addOwnerDto.firstName;
user.lastName = addOwnerDto.lastName;
user.username = addOwnerDto.username;
user.password = hashedPassword;
user.typeOfUser = 'owner';
user.business = business;
const savedUser = await user.save();
}
登录
import bcryptjs from 'bcryptjs';
const validate = async(password) =>{
const user = await Users.findOne({username: 'someusername'});
const hashedPassowrd = user.password;
const isValid = await bcryptjs.compare(password, hashedPassword);
if(isValid) return true;
return false
}
推荐阅读
- reactjs - 使用useForm onChange反应输入未触发
- .htaccess - 用 htaccess 重写图像的 scr
- javascript - 如何通过按下按钮更改 css 代码
- excel - 根据另一个单元格中的引用将字符串变为红色
- node.js - babel-node 不会在 Node 版本 14 的 npm react 脚本中转换 JSX
- c# - 错误:无法连接到任何指定的 MySQL 主机 - Synology NAS - MariaDB 10 - C#
- java - 为什么我的 Python POST 可以工作,但我的 Java POST 给出 CSRF 错误?
- javascript - TypeScript - 从自定义位置导入模块(非相对)
- reactjs - React Native:如何安装需要`pod install`的两个不同版本的插件?
- mysql - 基于参数的 SQL 查询分支语法