2016-06-22 12 views
10

Tôi đang sử dụng plugin và chiến lược jwt trong hapijs. Tôi có thể tạo mã thông báo jwt trong khi người dùng đăng nhập và xác thực API khác bằng cách sử dụng cùng một mã thông báo thông qua chiến lược 'jwt'. Tôi đang đặt mã thông báo trong 'request.state.USER_SESSION' làm cookie nơi USER_SESSION là tên mã thông báo. Ngoài ra tôi không lưu các mã thông báo trong cơ sở dữ liệu. Nhưng làm thế nào tôi có thể phá hủy mã thông báo jwt tại thời điểm đăng xuất. Xin đề nghị một cách.Làm thế nào để tiêu diệt JWT Tokens khi đăng xuất?

Trả lời

14

JWT được lưu trữ trên trình duyệt, do đó loại bỏ các dấu hiệu xóa cookie ở phía khách hàng

Nếu bạn cũng cần phải vô hiệu hóa các mã thông báo từ phía máy chủ trước khi thời gian hết hạn của nó, ví dụ tài khoản bị xóa/bị chặn/treo, thay đổi mật khẩu, quyền thay đổi, người dùng đã đăng xuất bằng quản trị viên, hãy xem Invalidating JSON Web Tokens để biết một số kỹ thuật về commons như tạo danh sách đen hoặc mã thông báo xoay

+0

Tôi đồng ý với câu trả lời của bạn. Tôi đang đặt mã thông báo jwt trong cookie bằng 'reply.state (' USER_SESSION ', {jwtToken});' trong đó USER_SESSION là tên cookie. Vì vậy, bạn có thể đề xuất cho tôi những gì lệnh tôi nên chạy để xóa cookie từ nhà nước trong hapijs? – Garima

+0

Bạn đang ở phía máy chủ và bạn không thể buộc các trình duyệt xóa cookie. Nhưng bạn có thể đặt giá trị thành trống và bao gồm trường 'hết hạn' để vô hiệu hóa giá trị cookie. Xem http://stackoverflow.com/questions/5285940/correct-way-to-delete-cookies-server-side. Bạn cũng có thể vô hiệu hóa cookie ở phía máy khách với javascript 'var delete_cookie = function (name) { document.cookie = name + '=; expires = Thu, 01 Jan 1970 00:00:01 GMT;'; }; ' – pedrofb

+0

Cảm ơn rất nhiều! Tôi hài lòng với câu trả lời của bạn. – Garima

Các vấn đề liên quan