Tôi có API REST tốc độ nút trong đó tôi có thể thực hiện yêu cầu GET cho bộ điều khiển người dùng - /users/:id
- trong đó :id
là số id người dùng được lưu trữ trong cơ sở dữ liệu. Tôi cũng có một ứng dụng phía khách hàng React-Redux thực hiện cuộc gọi đến API. Để thực hiện yêu cầu, ứng dụng khách cần truy cập vào id người dùng, nhưng hiện tại tôi không chắc chắn cách tốt nhất để lưu trữ id người dùng ở phía máy khách.Lưu trữ User-Id trong ứng dụng phía máy khách để yêu cầu API
Để biết thêm ngữ cảnh, API của tôi gửi cho khách hàng JWT token khi đăng nhập giữ id người dùng; ứng dụng khách sẽ lưu mã thông báo trong localStorage
. Khi khách hàng đưa ra yêu cầu, API xác minh rằng id người dùng trong mã thông báo đã giải mã khớp với Id chứa trong URL trước khi gửi phản hồi lại cho máy khách.
tôi thấy hai giải pháp tiềm năng:
- Giải mã token JWT trên máy khách và sử dụng người dùng id được lưu trữ trong thẻ bài để thực hiện cuộc gọi API. Tôi nghĩ rằng đây là một nguy cơ tiềm ẩn về bảo mật, vì tôi tin rằng tôi sẽ cần lưu trữ bí mật trên ứng dụng khách. Ngoài ra, bất kỳ ai có mã thông báo đều có thể truy cập vào thông tin của người dùng.
- API gửi id người dùng về xác thực và khách hàng lưu trữ nó trong
localStorage
. (Tôi không nghĩ rằng việc lưu trữ nó trong kho lưu trữ Redux sẽ hoạt động vì người dùng có thể làm mới, xóa trạng thái của id người dùng). Ý thức của tôi là đây không phải là phương pháp hay nhất, vì tôi không thấy nhiều ứng dụng khách hàng khác sử dụng phương pháp này.
Giải pháp nào tốt hơn, hoặc có cách tiếp cận nào khác mà tôi không xem xét?
Trả lời tùy chọn đầu tiên của bạn: điều đó sẽ không tuân theo quy ước REST api? Về cơ bản nếu một id không được cung cấp, nó sẽ giống như '/ users /' bạn nói rằng nó sẽ lấy id từ token, nhưng get đến '/ users /' chỉ ra rằng client muốn lấy danh sách ALL users . – Nahro