Yêu cầu HTTP được coi là giao thức không trạng thái và được sử dụng để truyền dữ liệu giữa máy chủ và trình duyệt. Không trạng thái có nghĩa là họ không lưu trữ bất kỳ dữ liệu nào. Tuy nhiên, hoàn cảnh có thể buộc bạn phải xây dựng một máy chủ có trạng thái để lưu dữ liệu giữa phía máy khách và máy chủ. Một trong những cách tốt nhất để lưu dữ liệu đó là sử dụng phiên. Một phiên giúp bạn lưu trữ dữ liệu HTTP để sử dụng trên nhiều trang trên một trang web
Hướng dẫn này sẽ giúp bạn hiểu cách sử dụng phiên trong Node. Để hiểu cách Node sử dụng phiên, chúng tôi sẽ xây dựng xác thực dựa trên phiên và sử dụng phiên để giữ dữ liệu của người dùng được xác thực bằng Redis và MongoDB
Để tiếp tục với bài viết này, thật hữu ích khi có những điều sau đây
- Nút. js được cài đặt trên máy tính của bạn
- Máy chủ Redis được cài đặt trên máy tính của bạn. Chúng tôi sẽ sử dụng Redis để lưu trữ phiên người dùng
- MongoDB được cài đặt trên máy tính của bạn. Chúng tôi sẽ sử dụng cơ sở dữ liệu MongoDB để lưu trữ thông tin đăng nhập của người dùng
Đảm bảo các máy chủ MongoDB và Redis của bạn được thiết lập và chạy trước khi chúng tôi đi sâu vào và tạo ứng dụng
Phiên hoạt động như thế nào
Khi sử dụng một ứng dụng, máy tính biết bạn là ai và bạn dành bao nhiêu thời gian để sử dụng ứng dụng đó. Tuy nhiên, trong các máy chủ web HTTP, mọi thứ hơi khác một chút. Máy chủ HTTP không biết bạn và thời gian bạn tương tác với máy chủ. Điều này là do các máy chủ HTTP không trạng thái và không lưu trữ thông tin người dùng; . Điều này có nghĩa là mỗi yêu cầu mà trình duyệt của bạn thực hiện không biết về hành động của các yêu cầu trước đó
Phiên được sử dụng để làm cho máy chủ HTTP có trạng thái. Các biến phiên được sử dụng để lưu trữ thông tin người dùng sẽ được sử dụng trên ứng dụng web. Nó giúp theo dõi trạng thái giữa máy chủ [ứng dụng web] và máy khách [trình duyệt]. Bằng cách này, trình duyệt giữ các biến phiên với thông tin của yêu cầu trước đó được gửi tới máy chủ
Điều này có thể thực hiện được bằng cách cho phép máy chủ tạo ID phiên. Giá trị cookie được lưu trên trình duyệt của khách hàng khi phiên được tạo. Bằng cách này, yêu cầu sẽ được gửi cùng với giá trị của cookie này. Sau đó, máy chủ sẽ kiểm tra xem giá trị cookie có khớp với giá trị được lưu trữ trong phiên không
Sự khác biệt giữa cookie và phiên là cookie được lưu trên máy khách/trình duyệt trong khi phiên được lưu trên máy chủ. Không giống như phiên, cookie không lưu trữ bất kỳ thông tin đăng nhập nào của người dùng
Tại sao nên sử dụng Redis cho Lưu trữ phiên?
Redis là một cơ sở dữ liệu trong bộ nhớ có thể lưu trữ và duy trì nhiều định dạng dữ liệu. Chúng tôi sẽ sử dụng Redis làm kho lưu trữ dữ liệu trong bộ nhớ để lưu phiên. Lý do sử dụng bộ lưu trữ Redis trong trường hợp sử dụng này bao gồm những điều sau
- Vì lý do bảo mật, không nên lưu ID phiên trong trình duyệt. Redis đưa ra lựa chọn tốt để lưu phiên ở phía máy chủ
- Dễ dàng quản lý bộ đệm phiên. Bạn có thể đăng xuất khỏi phiên trình duyệt hiện tại bất cứ lúc nào bằng cách sử dụng bộ đệm phiên Redis
- Bạn không cần mã hóa thủ công bất kỳ khóa nào cho phiên Redis và Redis sẽ xử lý việc này cho bạn
- Lưu phiên trên máy khách có nghĩa là cần sử dụng CPU cao hơn để đảm bảo truyền dữ liệu an toàn và điều này không xảy ra khi sử dụng cơ sở dữ liệu trong bộ nhớ như Redis
Thiết lập ứng dụng
Mở dòng lệnh từ thư mục làm việc của bạn và chạy lệnh sau để khởi tạo ứng dụng với Nút mặc định. cấu hình js
npm init -y
Chúng tôi sẽ sử dụng các gói bên thứ ba sau đây trong suốt bài viết
- Bcrypt. Để mã hóa và giải mã mật khẩu
- Kết nối-redis. Để kết nối với máy chủ Redis từ ứng dụng
- EJS. Để hiển thị chế độ xem [mẫu]
- Thể hiện. Để thiết lập máy chủ HTTP của ứng dụng
- phiên cấp tốc. Để xử lý các phiên trong ứng dụng
- làm lại. Để tạo ứng dụng khách Redis trên ứng dụng
- cầy mangut. Mô hình quan hệ đối tượng MongoDB. Để cung cấp giải pháp dựa trên lược đồ cho dữ liệu ứng dụng của bạn
- Nodemon. Để tự động khởi động lại máy chủ phát triển bất cứ khi nào có bất kỳ thay đổi nào được thực hiện
Chạy các lệnh sau để cài đặt các gói
npm i bcrypt connect-redis ejs express express-session redis mongoose
npm i --save-dev nodemon
Tạo một máy chủ phiên cơ bản
Bên trong thư mục dự án, tạo một tệp
const express = require["express"];
const session = require["express-session"];
const mongoose = require["mongoose"];
const redis = require['connect-redis'];
5. Cấu hình chính sẽ được lưu trữ tại đây. Trên tệp const express = require["express"];
const session = require["express-session"];
const mongoose = require["mongoose"];
const redis = require['connect-redis'];
6, bên dưới const express = require["express"];
const session = require["express-session"];
const mongoose = require["mongoose"];
const redis = require['connect-redis'];
7, hãy thêm dòng sau"dev": "nodemon index.js"
Chúng tôi sẽ chạy lệnh trên khi khởi động máy chủ phát triển. Bên trong tệp
const express = require["express"];
const session = require["express-session"];
const mongoose = require["mongoose"];
const redis = require['connect-redis'];
5Hãy tạo một phần mềm trung gian phiên cơ bản cho biết cách các phiên hoạt động ở cấp chính. Đầu tiên, nhập các phụ thuộc cần thiết
const express = require["express"];
const session = require["express-session"];
const mongoose = require["mongoose"];
const redis = require['connect-redis'];
Xác định cổng mà máy chủ sẽ chạy trên đó
const PORT = process.env.PORT || 8080;
Khởi tạo nút. ứng dụng js Express
const app = express[];
Chấp nhận dữ liệu JSON trong ứng dụng
app.use[express.json[]];
app.use[express.urlencoded[{ extended: true }]];
Khởi tạo công cụ xem
app.set['view engine', 'ejs'];
Định cấu hình ứng dụng khách Redis
const redisClient = require['redis'].createClient[{
legacyMode:true
}];
Chúng tôi sẽ sử dụng ứng dụng khách Redis để lưu các phiên. Ở đây đảm bảo bạn có kết nối với máy chủ Redis
npm i bcrypt connect-redis ejs express express-session redis mongoose
0Khởi tạo cửa hàng Redis để lưu phiên
npm i bcrypt connect-redis ejs express express-session redis mongoose
1Hãy tiếp tục và định cấu hình phiên bằng phần mềm trung gian phiên sau
npm i bcrypt connect-redis ejs express express-session redis mongoose
2Để tạo bất kỳ phiên nào, bạn cần có các tùy chọn Express-session sẽ hướng dẫn máy chủ khởi tạo phiên. Trong khối mã trên, chúng tôi đang khởi tạo phần mềm trung gian phiên. Việc thêm các tham số sau
9 - cookie là đối tượng được đặt cho mã thông báo ID phiên. Đối tượng này có thể có nhiều tùy chọn khác nhau, chẳng hạn như bảo mật, httpOnly và maxAgeconst express = require["express"]; const session = require["express-session"]; const mongoose = require["mongoose"]; const redis = require['connect-redis'];
0 - hướng dẫn máy chủ nơi lưu các phiên bản phiên. Trong trường hợp này, chúng tôi đang sử dụng cửa hàng Redisconst PORT = process.env.PORT || 8080;
1 - để tạo bất kỳ phiên nào, bạn cần một bí mật, đó là khóa được sử dụng để mã hóa cookie ID phiênconst PORT = process.env.PORT || 8080;
2 - điều này buộc máy chủ khôi phục phiên về kho lưu trữ phiên ngay cả khi phiên không bị thay đổi trong các yêu cầu tiếp theo tới máy chủ. Nếuconst PORT = process.env.PORT || 8080;
2 thành true, máy chủ sẽ buộc phải lưu lại bất kỳ phiên nào. Trong trường hợp này, chúng tôi sẽ đặt nó thành false. Lưu lại có thể đúng với cửa hàng của chúng tôi. Chúng tôi sẽ đặt ngày hết hạn cho các phiên được lưu trữ để đảm bảo các giá trị đó sẽ bị xóa khi hết thời gian nhất địnhconst PORT = process.env.PORT || 8080;
4 - khi một phiên được tạo nhưng chưa được cập nhật, nó được coi là chưa được khởi tạo. Điều này cho phép máy chủ buộc phiên "chưa khởi tạo" được lưu trữ trong cửa hàng. Tuy nhiên, ở đây chúng tôi muốn thực hiện các phiên đăng nhập. Do đó, đặtconst PORT = process.env.PORT || 8080;
4 thành false sẽ là lý tưởng. Điều này sẽ giảm yêu cầu lưu trữ của máy chủ hoặc tuân thủ luật yêu cầu sự đồng ý trước khi đặt cookie. Sai cũng sẽ hỗ trợ trong các tình huống điều kiện cạnh tranh trong đó khách hàng thực hiện nhiều yêu cầu đồng thời mà không có phiênconst PORT = process.env.PORT || 8080;
Có nhiều tùy chọn mà bạn có thể thêm vào phần mềm trung gian phiên của mình. Kiểm tra hướng dẫn này và tìm hiểu những gì phù hợp nhất với trường hợp sử dụng phiên của bạn
💡 Lưu ý. Trong các tham số trên, chúng tôi đã đặt
6 thành false. Các phiên thường được triển khai trong giao thức HTTPS để đảm bảo trao đổi dữ liệu an toàn. Do đó, hãy luôn đảm bảo rằng bạn chạy một phiên trên HTTPS và bạn có thể thiết lập điều này bằng cách đảm bảo rằngconst PORT = process.env.PORT || 8080;
6 là đúng. Chúng tôi chỉ đặt sai cho mục đích minh họa để chạy máy chủ phiên trên máy chủ cục bộconst PORT = process.env.PORT || 8080;
Để thực thi phần mềm trung gian trên, hãy tạo một tuyến giả như sau
npm i bcrypt connect-redis ejs express express-session redis mongoose
3Khởi động máy chủ và cơ sở dữ liệu
npm i bcrypt connect-redis ejs express express-session redis mongoose
4Hãy kiểm tra máy chủ cơ bản này. Khởi động máy chủ phát triển từ thiết bị đầu cuối của bạn bằng cách chạy như sau
npm i bcrypt connect-redis ejs express express-session redis mongoose
5Từ trình duyệt của bạn, mở
const PORT = process.env.PORT || 8080;
8. Bạn sẽ nhận được những điều sau đâynpm i bcrypt connect-redis ejs express express-session redis mongoose
6Đầu tiên, máy chủ sẽ tạo ID phiên cookie dựa trên các tùy chọn
const express = require["express"];
const session = require["express-session"];
const mongoose = require["mongoose"];
const redis = require['connect-redis'];
9 được tạo trên phần mềm trung gian phiên. Bạn có thể kiểm tra trường hợp này ngay trên trình duyệt của mình bằng công cụ kiểm tra như sauPhiên của bạn sẽ được lưu trữ trong cửa hàng Redis của bạn như vậy. Chạy lệnh sau để xác nhận rằng
npm i bcrypt connect-redis ejs express express-session redis mongoose
7Phát lại phiên dành cho nhà phát triển
Khám phá sự thất vọng, hiểu lỗi và khắc phục sự cố chậm hơn bao giờ hết với OpenReplay — bộ phát lại phiên mã nguồn mở dành cho nhà phát triển. Nó có thể tự lưu trữ trong vài phút, cho phép bạn kiểm soát hoàn toàn dữ liệu khách hàng của mình
Xây dựng ứng dụng dựa trên xác thực phiên
Ở đó bạn có phiên của bạn đã sẵn sàng và được lưu trữ. Bây giờ, hãy đi sâu vào và triển khai ứng dụng phiên dựa trên xác thực
Thiết lập mô hình người dùng
Trên thư mục dự án, tạo một thư mục
const app = express[];
0. Bên trong thư mục, tạo một tệp const app = express[];
1. Chúng tôi sẽ xác định mô hình người dùng trên tệp. Bên trong tệp const app = express[];
1- Nhập khẩu
3 vàconst app = express[];
4 từconst app = express[];
5const app = express[];
npm i bcrypt connect-redis ejs express express-session redis mongoose
8- Xây dựng lược đồ người dùng như sau
npm i bcrypt connect-redis ejs express express-session redis mongoose
9- Xuất mô hình Người dùng
npm i --save-dev nodemon
0Thiết lập bộ điều khiển người dùng
Trên thư mục dự án, tạo một thư mục
const app = express[];
6. Bên trong thư mục, tạo một tệp const app = express[];
7Bên trong tập tin
- Nhập các mô-đun cần thiết
npm i --save-dev nodemon
1- Xác định trình xử lý cho Trang chủ
npm i --save-dev nodemon
2Thiết lập các tuyến ứng dụng
Trên thư mục dự án, tạo một thư mục
const app = express[];
8. Bên trong thư mục, tạo một tệp const express = require["express"];
const session = require["express-session"];
const mongoose = require["mongoose"];
const redis = require['connect-redis'];
5. Bên trong tập tin này [app.use[express.json[]];
app.use[express.urlencoded[{ extended: true }]];
0]- Nhập các mô-đun cần thiết
npm i --save-dev nodemon
3- Xác định đường dẫn cho trang chủ
npm i --save-dev nodemon
4- Xuất bộ định tuyến
npm i --save-dev nodemon
5Bước tiếp theo là hiển thị đối tượng bộ định tuyến mà chúng ta đã xác định trước đó cho máy chủ ứng dụng. Trên tệp
const express = require["express"];
const session = require["express-session"];
const mongoose = require["mongoose"];
const redis = require['connect-redis'];
5- Nhập mô-đun
npm i --save-dev nodemon
6- Thay thế điểm chúng tôi đã xác định các tuyến đường giả bằng điểm sau
npm i --save-dev nodemon
7Tạo chế độ xem ứng dụng với EJS
Trên thư mục dự án, tạo một thư mục
app.use[express.json[]];
app.use[express.urlencoded[{ extended: true }]];
2. Bên trong thư mục, tạo thêm hai thư mục con. app.use[express.json[]];
app.use[express.urlencoded[{ extended: true }]];
3 và app.use[express.json[]];
app.use[express.urlencoded[{ extended: true }]];
4Trong thư mục partials, tạo ba tệp
5. Đối với chân trangapp.use[express.json[]]; app.use[express.urlencoded[{ extended: true }]];
6. Đối với nội dung đầuapp.use[express.json[]]; app.use[express.urlencoded[{ extended: true }]];
7. Đối với thanh điều hướngapp.use[express.json[]]; app.use[express.urlencoded[{ extended: true }]];
Trên thư mục pages, chúng tôi cũng sẽ thêm ba tệp
8. Đối với trang chủapp.use[express.json[]]; app.use[express.urlencoded[{ extended: true }]];
9. Đối với trang đăng nhậpapp.use[express.json[]]; app.use[express.urlencoded[{ extended: true }]];
0. Đối với trang đăng kýapp.set['view engine', 'ejs'];
Để làm theo hướng dẫn này dễ dàng hơn, các chế độ xem EJS ở trên có thể được truy cập từ kho lưu trữ GitHub này. Cho đến thời điểm này, hãy đảm bảo mỗi chế độ xem phản ánh như vậy
Vì để xem trang chủ, bạn phải được xác thực. Chúng tôi sẽ xử lý điều đó trong bước tiếp theo
Xử lý xác thực
Trên tệp
app.set['view engine', 'ejs'];
1, hãy bắt đầu bằng cách xác định trình xử lý cho trang đăng nhậpTrình xử lý sẽ kiểm tra xem chúng tôi đã có phiên chưa. Nếu chúng tôi làm như vậy, nó sẽ chuyển hướng đến trang đăng xuất;
npm i --save-dev nodemon
8Vào ngày
app.use[express.json[]];
app.use[express.urlencoded[{ extended: true }]];
0- Nhập trình xử lý
3app.set['view engine', 'ejs'];
npm i --save-dev nodemon
9- Xác định lộ trình cho nó
"dev": "nodemon index.js"
0Với điều đó đã được xác định, hãy đảm bảo rằng máy chủ phát triển của bạn đã được khởi động và sau đó truy cập.
const PORT = process.env.PORT || 8080;
8. Bạn sẽ được chuyển hướng đến trang đăng nhập như sauXử lý đăng nhập người dùng
Bước tiếp theo là xử lý logic đăng nhập để biểu mẫu có thể phản hồi. Trên
app.set['view engine', 'ejs'];
1, xác định trình xử lý để xử lý đầu vào biểu mẫu do người dùng gửi như sau"dev": "nodemon index.js"
1Trên tệp
app.use[express.json[]];
app.use[express.urlencoded[{ extended: true }]];
0- Nhập trình xử lý
"dev": "nodemon index.js"
2- Xác định lộ trình cho nó
"dev": "nodemon index.js"
3Đảm bảo rằng máy chủ phát triển đang hoạt động. Làm mới trang rồi gửi biểu mẫu. Lúc này do bạn chưa đăng ký nên sẽ báo lỗi User with this email does not survival. Để giải quyết vấn đề này, chúng tôi sẽ xử lý lộ trình đăng ký tiếp theo
Xử lý đăng ký người dùng
Dưới
app.set['view engine', 'ejs'];
1, xác định trình xử lý cho trang đăng ký như sau"dev": "nodemon index.js"
4Trên tệp
app.use[express.json[]];
app.use[express.urlencoded[{ extended: true }]];
0- Nhập trình xử lý
"dev": "nodemon index.js"
5- Xác định lộ trình cho nó
"dev": "nodemon index.js"
6Đảm bảo rằng máy chủ phát triển đang hoạt động. Làm mới trang rồi nhấp vào liên kết đăng ký trên thanh điều hướng. Bạn nên được dẫn đến một trang như vậy
Tại thời điểm này, biểu mẫu không phản hồi. Trong phần
app.set['view engine', 'ejs'];
1, hãy thêm trình xử lý để đăng ký như sau"dev": "nodemon index.js"
7Dưới
app.use[express.json[]];
app.use[express.urlencoded[{ extended: true }]];
0- Nhập trình xử lý
"dev": "nodemon index.js"
8- Xác định lộ trình cho nó
"dev": "nodemon index.js"
9Với máy chủ phát triển đang hoạt động, hãy làm mới trang. Điền vào biểu mẫu với các chi tiết cần thiết. Khi tài khoản của bạn đã được tạo, bạn sẽ được chuyển hướng đến trang chủ như sau
Khi bạn tạo tài khoản, ID phiên sẽ được tạo và lưu trên cửa hàng Redis. Tương tự như vậy, một cookie để xác định phiên đã tạo sẽ được tạo và gửi lại cho khách hàng. Hãy kiểm tra xem đây có phải là trường hợp của ứng dụng không
Bắt đầu với ứng dụng khách/trình duyệt, hãy sử dụng công cụ kiểm tra và kiểm tra giá trị cookie như sau
Đây là giá trị cookie được gửi lại cho khách hàng. Bây giờ hãy kiểm tra ID phiên được lưu bởi máy chủ. Chạy lệnh sau để xác nhận rằng
npm i bcrypt connect-redis ejs express express-session redis mongoose
7Ở đó, bạn đã tạo, lưu phiên và sẵn sàng xác thực người dùng đã tạo
ID phiên và ID cookie, cùng với mô tả về hoạt động [xác thực người dùng trong trường hợp này], được gửi lại máy chủ mỗi khi người dùng thực hiện một hành động hoặc gửi yêu cầu thông qua ứng dụng web. Khi người dùng muốn đăng nhập lại vào ứng dụng, ứng dụng sẽ sử dụng cookie do máy khách lưu và kiểm tra cookie đó với ID phiên do máy chủ lưu. Ứng dụng sẽ xác thực người dùng nếu yêu cầu và ID cookie khớp với ID phiên đã lưu
Cookie được lưu trên trình duyệt và kẻ tấn công có thể truy cập giá trị của nó. Tuy nhiên, nếu trong bất kỳ trường hợp nào, kẻ tấn công lấy được giá trị cookie, thì chúng không thể truy cập phiên đã lưu vì nó được lưu trữ ở một nơi an toàn trên máy chủ. Nếu kẻ tấn công tình cờ sửa đổi cookie [cố gắng khớp với phiên đã lưu], điều này sẽ phá vỡ chữ ký cookie. Khi yêu cầu đăng nhập được gửi cùng với cookie đã sửa đổi, máy chủ sẽ phát hiện bất kỳ thay đổi nào sẽ tự động khiến cookie trở nên vô dụng. Bằng cách này, máy khách và máy chủ vẫn an toàn vì cả hai vẫn đồng bộ
Chúng tôi đã sử dụng MongoDB để giữ chi tiết người dùng. Do đó, thông tin người dùng đã đăng ký sẽ có sẵn trong cơ sở dữ liệu như sau
Chúng tôi đã làm rất tốt cho đến thời điểm này. Bây giờ hãy thêm một logic để xử lý đăng xuất của người dùng
Xử lý đăng xuất người dùng
Bước cuối cùng sẽ là xử lý đăng xuất. Khi bạn đã đăng nhập, bạn cần có thể đăng xuất
Trên tệp
app.set['view engine', 'ejs'];
1, thêm trình xử lý để đăng xuất như sauconst express = require["express"];
const session = require["express-session"];
const mongoose = require["mongoose"];
const redis = require['connect-redis'];
1Vào ngày
app.use[express.json[]];
app.use[express.urlencoded[{ extended: true }]];
0- Nhập trình xử lý
const express = require["express"];
const session = require["express-session"];
const mongoose = require["mongoose"];
const redis = require['connect-redis'];
2- Xác định lộ trình đăng xuất
const express = require["express"];
const session = require["express-session"];
const mongoose = require["mongoose"];
const redis = require['connect-redis'];
3Với máy chủ phát triển đang hoạt động, hãy làm mới trang. Khi bạn đã tạo tài khoản, hãy nhấp vào liên kết đăng xuất trên thanh điều hướng
Điều quan trọng cần lưu ý là phiên vẫn có hiệu lực trong một thời gian nhất định. Sau khi hết thời gian đã đặt, phiên sẽ bị xóa khỏi máy chủ. Máy chủ sẽ tạo một phiên khác đối với cookie đã lưu khi người dùng đăng nhập lại. Cách tiếp cận này sử dụng phương pháp hết hạn phiên tự động. Phiên sẽ được lưu trữ trong máy chủ cho đến khi thời gian hết hạn được đặt bởi thuộc tính
const redisClient = require['redis'].createClient[{
legacyMode:true
}];
3Tuy nhiên, khi thực hiện đăng xuất khỏi ứng dụng xác thực, người dùng buộc phải hủy phiên. Nút đăng xuất cung cấp các tùy chọn cho người dùng có ý thức bảo mật để chấm dứt phiên của họ theo cách thủ công khi họ đã sử dụng xong ứng dụng web
Khi nhấp vào nút đăng xuất,
const redisClient = require['redis'].createClient[{
legacyMode:true
}];
4 sẽ được thực thi để xóa phiên. Bạn sẽ được chuyển hướng đến trang đăng nhập vì phiên của bạn đã bị hủyKhi bạn đăng xuất, bạn có thể kiểm tra xem phiên có bị hủy không. Chạy lệnh sau để xác nhận rằng
npm i bcrypt connect-redis ejs express express-session redis mongoose
7Điều này trả về một mảng trống vì không có phiên nào. Vì MongoDB có chi tiết người dùng nên bạn có thể đăng nhập lại. Lần này, một phiên sẽ được tạo lại để xác định phiên hoạt động của người dùng
Phần kết luận
Các phiên được các ứng dụng web sử dụng để theo dõi một loạt các yêu cầu HTTP và các hoạt động phản hồi được kết hợp với cùng một người dùng qua mạng. Trong hướng dẫn này, chúng tôi đã học cách sử dụng phiên để xác thực người dùng
Đối với bất kỳ tham chiếu mã nào, hãy kiểm tra ứng dụng trên kho lưu trữ GitHub này. Tôi hy vọng bạn tìm thấy điều này hữu ích. Mã hóa vui vẻ
MẸO TỪ NGƯỜI BIÊN TẬP. Đối với chủ đề liên quan, đừng bỏ lỡ các bài viết về Thực tiễn tốt nhất về xác thực JWT và Xác thực với JWT cho trang web của bạn
Làm cách nào để hủy phiên trong JavaScript?
Chúng ta có thể xóa bộ nhớ phiên bằng cách sử dụng phương thức clear[] .Bí mật trong Express là gì
Tùy chọn phiên cấp tốc và cách sử dụng chúng . Nó được lưu trữ trong một biến môi trường và không thể hiển thị công khai. Khóa thường dài và được tạo ngẫu nhiên trong môi trường sản xuất. a random unique string key used to authenticate a session. It is stored in an environment variable and can't be exposed to the public. The key is usually long and randomly generated in a production environment.Express ở đâu
Để lưu trữ dữ liệu phiên bảo mật, chúng ta có thể sử dụng gói express-session. Nó lưu trữ dữ liệu phiên trên máy chủ và cấp cho khách hàng ID phiên để truy cập dữ liệu phiên.Thể hiện như thế nào
Theo mặc định, express-session tạo một phiên bản MemoryStore mới để lưu trữ dữ liệu phiên trong máy chủ . Tuy nhiên, trong quá trình sản xuất, không nên sử dụng kho lưu trữ bộ nhớ mặc định, như đã đề cập trong tài liệu chính thức. Chúng ta nên sử dụng các mô-đun khác, chẳng hạn như connect-redis, một kho lưu trữ phiên dựa trên Redis.