Nodejs session là gì

  • Lập Trình
Session là gì? Cookie là gì?

74162

Facebook

Linkedin

Telegram

Mục lục nội dung

  1. Session là gì?
  2. Cách sử dụng Session
  3. Cookie là gì?
  4. Cách sử dụng Cookie
  5. So sánh giữa Cookie và Session

Session là gì? –  Session, Cookie là 2 khái niệm được nhắc đến thường xuyên đối với các lập trình web. Khi mới bắt đầu tập làm web, nhiều bạn chắc hẳn rất hay nhầm lẫn giữa các khái niệm này. Sẽ có lúc bạn không biết lúc nào thì mình nên dùng session, lúc nào mình nên dùng cookie.

Session là gì?

Khái niệm session là gì không quá xa lạ với các fresher, Session là một phiên làm việc là một khái niệm phổ biến được dùng trong lập trình web có kết nối với database. Đặc biệt các chức năng như đăng nhập, đăng xuất người dùng sẽ khó có thể thực hiện được nếu không sử dụng session.

Nodejs session là gì
Nodejs session là gì

Nodejs session là gì
Nodejs session là gì

Cách sử dụng Session

Một session bắt đầu khi client gửi request đến server, nó tồn tại xuyên suốt từ trang này đến trang khác trong ứng dụng web và chỉ kết thúc khi hết thời gian timeout hoặc khi bạn đóng ứng dụng. Giá trị của session sẽ được lưu trong một file trên server.

Ví dụ khi bạn đăng nhập vào một trang web và đăng nhập với tài khoản đã đăng ký trước đó. Server sau khi xác thực được thông tin bạn cung cấp là đúng thì nó sẽ sinh ra một tập tin chứa dữ liệu cần lưu trữ của người dùng.

Với mỗi session sẽ được cấp phát một định danh duy nhất SessionID. Khi kết thúc một phiên làm việc và bắt đầu một phiên mới, dĩ nhiên bạn sẽ được cấp một SessionID khác với trước đó. Bạn có thể tuỳ ý quyết định xem nên lưu trữ những thông tin nào vào Session. Nhưng thông thường chúng ta chỉ nên lưu những thông tin tạm thời trong session.

Giống khái niệm session là gì, khái niệm cookie cũng được dùng để lưu những thông tin tạm thời. Nhưng tập tin cookie sẽ được truyền từ server tới browser và được lưu trữ trên máy tính của bạn khi bạn truy cập vào ứng dụng.

Cookie thường được tạo ra khi người dùng truy cập một website, cookie sẽ ghi nhớ những thông tin như tên đăng nhập, mật khẩu, các tuỳ chọn do người dùng lựa chọn đi kèm. Các thông tin này được lưu trong máy tính để nhận biết người dùng khi truy cập vào một trang web.

Nodejs session là gì
Nodejs session là gì

Khi người dùng truy cập đến một trang web có sử dụng cookie, web server của trang đó sẽ tự động gửi cookie đến máy tính của người dùng. Khi truy cập đến các trang web sử dụng được cookie đã lưu, những cookie này tự động gửi thông tin của người dùng về cho chủ của nó (người tạo ra cookie). Tuy nhiên những thông tin do cookie ghi nhận không được tiết lộ rộng rãi, chỉ có website chứa cookie mới có thể xem được những thông tin này.

Mỗi cookie thường có khoảng thời gian timeout nhất định do lập trình viên xác định trước. Những thông tin được lưu vào cookie ví dụ như thông tin đăng nhập, thao tác người dùng, tần xuất ghé thăm website, thời gian truy cập… Tất cả chúng đều là những thông tin mang tính tạm thời và được lưu trong 1 khoảng thời gian.

Cookie được xem là một thành phần không thể thiếu được với những website có khối lượng dữ liệu lớn, có số lượng người dùng đông, và có những chức năng đi kèm với thành viên đăng ký.

Việc giao tiếp giữa trình duyệt với máy chủ của website (hay webserver) được thực hiện thông qua hàng loạt các router trên mạng internet. Một vấn đề đặt ra trong quá trình giao tiếp này đó là làm sao để phân được giữa cá trình duyệt (máy tính) khác nhau. Ví dụ như bạn truy cập một trang bán hàng thì máy chủ cần:

  • Phân biệt được các máy tính (trình duyệt) khác nhau: nói cách khác máy chủ cần phân biệt được trong những lượt truy cập gửi tới máy chủ thì đâu là từ máy tính bạn và đâu là của người khác.
  • Lưu thông tin của giỏ hàng: ví dụ như thông tin về số lượng hàng hoá bạn đã thêm vào giỏ hàng
  • Bạn có thể tuỳ ý quyết định xem nên lưu trữ những thông tin nào vào Session. Nhưng thông thường chúng ta chỉ nên lưu những thông tin tạm thời trong session ví dụ như số lượng sản phẩm người dùng đã thêm vào giỏ nhưng chưa mua, hay những nhật xét đang được viết và lưu dưới dạng nháp nhưng chưa gửi đi. Những dữ liệu sử dụng lâu dài như nội dung nhận xét đã được gửi đi hay số sản phẩm đã được mua thì nên được thực hiện ở máy chủ chứa cơ sở dữ liệu.

  • Làm Sao Để Phân Biệt Session Của Các Trình Duyệt Khác Nhau.

    • Sau khi chúng ta (các lập trình viên website) tạo ra một tập tin session trên máy chủ để lưu trữ dữ liệu tạm thời của người dùng thì chúng ta cần phải phân biệt được session nào là của người dùng nào. Để làm điều này thì với mỗi session tạo ra chúng ta cần tạo một cookie trên trình duyệt của người dùng tương ứng với nó.Cookie là một mẩu tin nhỏ có thể được trình duyệt tạo ra khi người dùng duyệt web và dùng để lưu trữ thông tin của người dùng ở phía trình duyệt (phía máy khách).
    • Cookie có thể được tạo ra mà không yêu cầu cần phải tạo ra 1 session trên server tương ứng với nó. Tuy nhiên mỗi session được tạo ra thì cần phải có một cookie tương ứng với nó để xác định xem session này được sử dụng cho trình duyệt nào. Nhờ sử dụng cookie mà chúng ta có thể phân biệt được giữa các session khác nhau của các trình duyệt khác nhau.
    • http://www.codehub.vn/Giai-Thich-Su-Khac-Nhau-Giua-Session-va-Cookie-Danh-Cho-Nguoi-Khong-Ranh-Ve-Lap-Trinh

    • http://www.codehub.vn/Session-La-Gi

    • https://quantrimang.com/internet-cookies-lam-viec-nhu-the-nao-70733

    • https://viblo.asia/p/tim-hieu-ve-session-va-cookie-E375zBqd5GW

    • https://techtalk.vn/session-va-cookies.html

    Cookie, session trong node.js

    Sử dụng session-express trong ứng dụng node.js

    • Session thì không bắt buộc phải lưu trên store,
    • Cấu hình để tạo cookie, session:

        app.set('trust proxy', 1)
        app.use(session({
            secret: 'FMS',
            resave: false,
            saveUninitialized: true,
            cookie: { 
                maxAge: 300000,
                secure: false 
            }
        }))

    • secret: là chữ ký cho session ID cookie và session5.

    • cookie.secure:

      • Khi xét session6 chạy trên phương thức HTTP thì cookie sẽ ko dc lưu trên trình duyệt, cookie đc lưu khi chạy trên phương thức HTTPS

      session7 Khi đó ta phải thêm session8 trong phần cài đặt express để lưu dc cookie trên trình duyệt khi trên chạy phương thức HTTP

    • name:

      • Là tên của session ID cookie được truyền vào response gửi cho client khi mà client gửi requset đầu tiên tới máy chủ (lần đầu tiên truy cập vào trang web).

        Session Javascript là gì?

        Một session là một phiên làm việc. Nó sẽ bắt đầu khi client gửi request đến server và tồn tại xuyên suốt từ trang này đến trang khác trong ứng dụng và chỉ kết thúc khi hết thời gian hoặc khi đóng ứng dụng.

        Authentication NodeJS là gì?

        Authentication trong NodeJS là bài hướng dẫn bạn cách triển khai chức năng liên quan đến người dùng như đăng nhập, kiểm tra đăng nhập, mã khóa mật khẩu …