Làm cách nào để hủy phiên trong phiên Express?

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'];
5

Hã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
0

Khởi tạo cửa hàng Redis để lưu phiên

npm i bcrypt connect-redis ejs express express-session redis mongoose
1

Hã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

  • const express = require["express"];
    const session = require["express-session"];
    const mongoose = require["mongoose"];
    const redis = require['connect-redis'];
    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à maxAge
  • const PORT = process.env.PORT || 8080;
    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 Redis
  • const 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ên
  • const 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ếu
    const 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 định
  • const 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 đó, đặt
    const 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ên

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

const PORT = process.env.PORT || 8080;
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ằng
const 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ộ

Để 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
3

Khởi động máy chủ và cơ sở dữ liệu

npm i bcrypt connect-redis ejs express express-session redis mongoose
4

Hã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
5

Từ 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 đây

npm 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ư sau

Phiê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
7

Phá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

Chúc mừng gỡ lỗi. Hãy thử sử dụng OpenReplay ngay hôm nay

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
    const app = express[];
    3 và
    const app = express[];
    4 từ
    const app = express[];
    5
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
0

Thiế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[];
7

Bê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
2

Thiế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
5

Bướ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
7

Tạ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 }]];
4

Trong thư mục partials, tạo ba tệp

  • app.use[express.json[]];
    app.use[express.urlencoded[{ extended: true }]];
    5. Đối với chân trang
  • app.use[express.json[]];
    app.use[express.urlencoded[{ extended: true }]];
    6. Đối với nội dung đầu
  • app.use[express.json[]];
    app.use[express.urlencoded[{ extended: true }]];
    7. Đối với thanh điều hướng

Trên thư mục pages, chúng tôi cũng sẽ thêm ba tệp

  • app.use[express.json[]];
    app.use[express.urlencoded[{ extended: true }]];
    8. Đối với trang chủ
  • app.use[express.json[]];
    app.use[express.urlencoded[{ extended: true }]];
    9. Đối với trang đăng nhập
  • app.set['view engine', 'ejs'];
    0. Đối với trang đăng ký

Để 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ập

Trì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
8

Vào ngày

app.use[express.json[]];
app.use[express.urlencoded[{ extended: true }]];
0

  • Nhập trình xử lý
    app.set['view engine', 'ejs'];
    3
npm i --save-dev nodemon
9
  • Xác định lộ trình cho nó
"dev": "nodemon index.js"
0

Vớ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ư sau

Xử 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"
1

Trê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"
4

Trê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"
7

Dướ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"
9

Vớ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ư sau

const express = require["express"];
const session = require["express-session"];
const mongoose = require["mongoose"];
const redis = require['connect-redis'];
1

Và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'];
3

Vớ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
}];
3

Tuy 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ủy

Khi 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.

Chủ Đề