Tôi có một ứng dụng web đơn giản có màn hình đăng nhập và trang hoạt động chỉ khả dụng khi người dùng đã cung cấp bằng chứng xác thực hợp lệ. Giả sử người dùng nhấp vào đăng nhập bằng thông tin đăng nhập hợp lệ và được chuyển hướng đến trang hoạt động.Now người dùng không nhấp vào đăng xuất, thay vào đó họ chỉ cần nhấp vào nút quay lại của trình duyệt và quay lại trang đăng nhập. Hành vi này rõ ràng là không trực quan, tôi sẽ giả định trong khi người dùng đăng nhập và anh/cô ấy nhấp vào nút quay lại để duy trì trên cùng một trang và không quay lại trang đăng nhập.Người dùng nhấp vào nút quay lại trong khi phiên vẫn được xác thực và được chuyển hướng đến trang đăng nhập trong node.js
function loginUser(req, res) {
if (req.session.auth) // if user is still authenticated
{
res.redirect('/activity');
}
res.render('login');
}
Đây là cách đơn giản tôi luôn chuyển hướng người dùng trở lại trang hoạt động, tuy nhiên tôi thấy đây là phương pháp lãng phí tài nguyên vì có các chuyển hướng không mong muốn được giới thiệu. Câu hỏi của tôi là, đây là cách tiêu chuẩn và sạch nhất để thực hiện hành vi trên hay liệu có một cơ chế tốt hơn? Tôi đang sử dụng hộ chiếu để xác thực và lưu trữ thẻ jwt.
EDIT: Để lặp lại giải pháp trên chỉ hoạt động nếu trình duyệt không có bộ nhớ cache được bật, trái với bộ điều khiển cho tuyến đăng nhập thậm chí không được gọi vì trình duyệt đã lưu vào bộ nhớ cache của trang. Tôi đang tìm thứ gì đó mạnh mẽ hơn. Tôi không nghĩ rằng thực hành tốt là khó mã hóa trình duyệt để không lưu vào bộ nhớ cache trang trong môi trường sản xuất.
Bạn không thể kiểm soát trình duyệt hoặc sửa đổi lịch sử của nó vì lý do bảo mật rõ ràng, vì vậy bạn đã thực hiện khá nhiều. Điều duy nhất có thể bị thiếu là đảm bảo kiểm tra mã của bạn nếu người dùng được đăng nhập hay không được thực hiện mỗi lần, do đó bạn cần đảm bảo rằng trang đăng nhập không thể được lưu trong trình duyệt. – HiDeo
Bạn có thể muốn xem xét JWT. Xem thư viện Satellizer trên github. –