Cách thay đổi mật khẩu trong NodeJS

Trong bài viết này, chúng tôi sẽ đề cập đến cách triển khai cách quên hoặc đặt lại mật khẩu trong nút js express và MySQL. Tôi muốn chia sẻ với các bạn thêm cách quên/đặt lại mật khẩu vào hệ thống xác thực đăng nhập trong MySQL. Ví dụ này sẽ giúp bạn tạo các luồng mật khẩu an toàn với nodejs và MySQL. Tại đây, bạn sẽ tìm hiểu cách triển khai đặt lại mật khẩu an toàn trong nút js

Thật không may, quy trình đặt lại mật khẩu bị rút ngắn và hạn chế trong quá trình phát triển ứng dụng. Điều này không chỉ có thể dẫn đến trải nghiệm người dùng khó chịu mà còn có thể khiến ứng dụng của bạn có lỗ hổng bảo mật

Bước 1. Cài đặt ứng dụng Node Express JS

Thực hiện lệnh sau trên thiết bị đầu cuối để cài đặt ứng dụng express js

express --view=ejs blog

Sau đó mở thiết lập blog bằng bất kỳ trình soạn thảo văn bản nào. Và sử dụng lệnh sau để nhập thư mục ứng dụng blog của bạn, Vì vậy, hãy mở cmd của bạn và chạy lệnh sau

cd blog

Nút của bạn js express js + cấu trúc ứng dụng email đặt lại mật khẩu mysql trông như thế này

Bước 2. Cài đặt các mô-đun Node js cần thiết

Cài đặt một số mô-đun nút js cần thiết, vì vậy hãy mở lại cmd của bạn và chạy các lệnh sau

npm install express-flash --save

npm install express-session --save

npm install method-override --save

npm install mysql --save

npm install rand-token --save

npm install body-parser --save

npm install bcrypt

npm install

Express-flash – Flash là phần mở rộng của connect-flash với khả năng xác định thông báo flash và hiển thị thông báo đó mà không cần chuyển hướng yêu cầu

Express-session – Express-session được sử dụng để tạo một phiên như trong PHP. Trong hướng dẫn thô về nút js MySQL này, phiên này là cần thiết vì yêu cầu rõ ràng của express-flash

Ghi đè phương thức – NPM được sử dụng để chạy phương thức DELETE và PUT từ biểu mẫu HTML. Một số trình duyệt web chỉ hỗ trợ các phương thức GET và POST

MySQL – Trình điều khiển để kết nối nút. js với MySQL

rand-token – Tạo mã thông báo ngẫu nhiên từ sự lựa chọn ngẫu nhiên của bạn

trình phân tích cú pháp nội dung – Trình phân tích cú pháp nội dung là Nút. phần mềm trung gian phân tích cú pháp cơ thể js. Nó chịu trách nhiệm phân tích các nội dung yêu cầu đến trong một phần mềm trung gian trước khi bạn xử lý nó

Nodemailer – Nodemailer là một mô-đun cho Node. js để cho phép gửi email dễ như ăn bánh. Dự án đã bắt đầu trở lại vào năm 2010 khi không có tùy chọn lành mạnh nào để gửi email, ngày nay nó là giải pháp phổ biến nhất dành cho Node. người dùng js chuyển sang theo mặc định

bcrypt – Bcrypt là một phương pháp phổ biến và đáng tin cậy cho mật khẩu muối và băm. Bạn đã học cách sử dụng thư viện NodeJS của bcrypt để tạo muối và băm mật khẩu trước khi lưu trữ trong cơ sở dữ liệu. Bạn cũng đã học cách sử dụng chức năng so sánh bcrypt để so sánh mật khẩu với hàm băm, cần thiết để xác thực

Nếu bạn muốn gửi thư từ máy chủ cục bộ hoặc không có chứng chỉ SSL, bạn cũng có thể thực hiện lệnh sau trên thiết bị đầu cuối của mình

npm config set strict-ssl false --global

set NODE_TLS_REJECT_UNAUTHORIZED=0

Bước 3. Kết nối ứng dụng Node Express JS với DB

Trước khi kết nối DB với ứng dụng xác minh email js của nút, hãy tạo một bảng trong cơ sở dữ liệu của bạn bằng cách sử dụng truy vấn SQL sau

-- phpMyAdmin SQL Dump

-- version 5.0.2

-- https://www.phpmyadmin.net/

--

-- Host: 127.0.0.1

-- Generation Time: Sep 11, 2021 at 02:49 PM

-- Server version: 10.4.14-MariaDB

-- PHP Version: 7.4.9

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";

START TRANSACTION;

SET time_zone = "+00:00";

--

-- Database: `my-node`

--

-- --------------------------------------------------------

--

-- Table structure for table `users`

--

CREATE TABLE `users` (

`id` int(11) NOT NULL,

`name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,

`email` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,

`password` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL,

`token` varchar(250) COLLATE utf8mb4_unicode_ci DEFAULT NULL

)

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--

-- Indexes for dumped tables

--

--

-- Indexes for table `users`

--

ALTER TABLE `users`

ADD PRIMARY KEY (`id`),

ADD UNIQUE KEY `email` (`email`);

--

-- AUTO_INCREMENT for dumped tables

--

--

-- AUTO_INCREMENT for table `users`

--

ALTER TABLE `users`

MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

COMMIT;

Sau đó truy cập thư mục gốc ứng dụng của bạn và tạo một cơ sở dữ liệu tên tệp. js. Sau đó thêm đoạn mã sau vào cơ sở dữ liệu của bạn. tập tin js

var mysql=require('mysql');

var connection=mysql.createConnection({

host:'localhost',

user:'root',

password:'',

database:'my-node'

});

connection.connect(function(error){

if(!!error){

console.log(error);

}else{

console.log('Connected!:)');

}

});

module.exports = connection;

Lưu ý rằng Tệp này được sử dụng để kết nối ứng dụng nút express js của bạn với MySQL DB

Bước 4. Nhập các mô-đun đã cài đặt trong ứng dụng. js

Nhập các mô-đun nút js đã cài đặt ở trên vào ứng dụng. tập tin js; . js và nhập tất cả các gói đã cài đặt ở trên vào ứng dụng. tập tin js

Vì vậy, đi đến ứng dụng. js và cập nhật đoạn mã sau

var createError = require('http-errors');

var express = require('express');

var path = require('path');

var cookieParser = require('cookie-parser');

var logger = require('morgan');

var flash = require('express-flash');

var session = require('express-session');

var bodyParser = require('body-parser');

var indexRouter = require('./routes/index');

var usersRouter = require('./routes/users');

var app = express();

// view engine setup

app.set('views', path.join(__dirname, 'views'));

app.set('view engine', 'ejs');

app.use(logger('dev'));

app.use(express.json());

app.use(express.urlencoded({ extended: false }));

app.use(cookieParser());

app.use(express.static(path.join(__dirname, 'public')));

app.use(session({

secret: '123458cat',

resave: false,

saveUninitialized: true,

cookie: { maxAge: 60000 }

}))

app.use(flash());

//app.use('/', indexRouter);

app.use('/', usersRouter);

// catch 404 and forward to error handler

app.use(function(req, res, next) {

next(createError(404));

});

// error handler

app.use(function(err, req, res, next) {

// set locals, only providing error in development

res.locals.message = err.message;

res.locals.error = req.app.get('env') === 'development' ? err : {};

// render the error page

res.status(err.status || 500);

res.render('error');

});

app.listen(4000, function () {

console.log('Node app is running on port 4000');

});

module.exports = app;

Bước 5. Tạo Lộ trình Quên và Đặt lại Mật khẩu

Tạo các tuyến quên và đặt lại mật khẩu bằng email gửi liên kết; . js route và tạo các route như bên dưới

Tạo chức năng gửi Email với cấu hình Gmail nodemailer

//send email

function sendEmail(email, token) {

var email = email;

var token = token;

var mail = nodemailer.createTransport({

service: 'gmail',

auth: {

user: '', // Your email id

pass: '' // Your password

}

});

var mailOptions = {

from: '[email protected]',

to: email,

subject: 'Reset Password Link - nicesnippets.com',

html: '

You requested for reset password, kindly use this link to reset your password

'

};

mail.sendMail(mailOptions, function(error, info) {

if (error) {

console.log(1)

} else {

console.log(0)

}

});

}

Bây giờ hãy mở liên kết https. //tài khoản của tôi. Google. com/lesssecureapps để Cho phép các ứng dụng kém an toàn hơn. TRÊN. Nó sẽ gửi email bằng tài khoản Gmail

Tạo Liên kết Đặt lại Mật khẩu với Gửi tới Email

________số 8_______

Tạo đường Reset/Update Password

/* update password to database */

router.post('/update-password', function(req, res, next) {

var token = req.body.token;

var password = req.body.password;

connection.query('SELECT * FROM users WHERE token ="' + token + '"', function(err, result) {

if (err) throw err;

var type

var msg

if (result.length > 0) {

var saltRounds = 10;

// var hash = bcrypt.hash(password, saltRounds);

bcrypt.genSalt(saltRounds, function(err, salt) {

bcrypt.hash(password, salt, function(err, hash) {

var data = {

password: hash

}

connection.query('UPDATE users SET ? WHERE email ="' + result[0].email + '"', data, function(err, result) {

if(err) throw err

});

});

});

type = 'success';

msg = 'Your password has been updated successfully';

} else {

console.log('2');

type = 'success';

msg = 'Invalid link; please try again';

}

req.flash(type, msg);

res.redirect('/');

});

})

Toàn bộ mã nguồn của người dùng. tuyến đường js

cd blog

0

Bước 6. Tạo chế độ xem

Tạo các trang quên mật khẩu và đặt lại/cập nhật mật khẩu;

Trang quên mật khẩu

Sau đó, bên trong thư mục này tạo một tệp chỉ mục. ejs. Và thêm đoạn mã sau vào nó

cd blog

1

Đặt lại/Cập nhật trang mật khẩu

Sau đó trong thư mục này tạo 1 file reset-password. ejs. Và thêm đoạn mã sau vào nó

cd blog

2

Bước 7. Chạy máy chủ phát triển

Bạn có thể sử dụng lệnh sau để chạy máy chủ phát triển

cd blog

3

Sau khi chạy lệnh này, hãy mở trình duyệt của bạn và nhấn

cd blog

4

Nếu bạn phát hiện bất kỳ lỗi nào khi gửi email bằng Gmail SMTP;

Làm cách nào để triển khai đặt lại mật khẩu trong nút js?

Hãy làm theo các bước sau để tạo email quên hoặc đặt lại mật khẩu trong nút js express với MySQL. .
Bước 1 – Cài đặt Node Express App JS
Bước 2 – Cài đặt các Mô-đun Node js cần thiết
Bước 3 – Kết nối ứng dụng Node Express JS với DB
Bước 4 – Nhập các Mô-đun đã cài đặt trong ứng dụng. js
Bước 5 – Tạo Lộ trình Quên và Đặt lại Mật khẩu

Làm cách nào để thay đổi mật khẩu ID người dùng của tôi?

Thay đổi mật khẩu của bạn .
Mở Tài khoản Google của bạn. Bạn có thể cần phải đăng nhập
Trong "Bảo mật", chọn Đăng nhập vào Google
Chọn mật khẩu. Bạn có thể cần phải đăng nhập lại
Nhập mật khẩu mới của bạn, sau đó chọn Thay đổi mật khẩu