Tôi có API web trong lõi .net 1.0 phát hành mã thông báo JWT (access_token) cho khách hàng khi đăng nhập. Bây giờ, mã thông báo có khoảng thời gian hết hạn ngắn (10 phút) và khách hàng yêu cầu một mã thông báo mới trong mỗi 8 phút cho tính liên tục của phiên. Mã thông báo này được lưu trữ trong cookie trong trình duyệt ở phía máy khách. Bây giờ, tính năng này hoạt động tốt nếu ứng dụng khách chỉ hoạt động trong một tab của trình duyệt. Tuy nhiên, nếu khách hàng mở hai hoặc nhiều tab, mỗi 8 phút yêu cầu mã thông báo mới được thực hiện cho API. Điều này dẫn đến nhiều yêu cầu từ cùng một người dùng cùng một lúc và mã thông báo ứng dụng của tôi cho mỗi và mọi yêu cầu nhưng chỉ một trong các mã thông báo được lưu trữ ở cookie bên ứng dụng khách. Nhưng nó kết quả trong nhiều mã thông báo trong đó chỉ có duy nhất một được sử dụng trong suốt cuộc đời của nó.Làm cách nào để tạo sự cố API chỉ một mã thông báo cho mỗi người dùng (được mở trong nhiều tab)?
Tôi đã thử lưu trữ userId và mã thông báo trong DB và kiểm tra chéo chúng trong yêu cầu API, tuy nhiên, cùng một người dùng trong nhiều tab yêu cầu đồng thời và logic không thành công ở đây.
Tôi làm cách nào để giải quyết tình huống này? Tôi muốn API của mình chỉ phát hành một mã thông báo cho mỗi người dùng được mở trong nhiều tab. Bất kỳ trợ giúp được đánh giá cao.
để bạn muốn API của mình phát hành một mã thông báo duy nhất cho mọi yêu cầu của người dùng ngay cả khi họ có nhiều tab đang mở? – Shaw
Có, cho cùng một người dùng được mở trong nhiều tab. – saurabhadhikari
Bạn cần chia sẻ các thẻ betweeb mã thông báo. Giao diện người dùng nên sử dụng lại nó khi có hoặc yêu cầu một giao diện mới và cung cấp cho phần còn lại của các tab. Nó có thể được thực hiện bằng cách sử dụng localStorage thay vì cookie và các sự kiện để truyền đạt một sự thay đổi. Xem https://stackoverflow.com/questions/20325763/browser-sessionstorage-share-between-tabs – pedrofb