Tôi đang phát triển dịch vụ REST nhỏ cần hỗ trợ sự kiên trì phiên của ứng dụng khách. Như bạn biết vì REST, chúng tôi không thể lưu trữ bất kỳ dữ liệu khách hàng nào trên máy chủ, dữ liệu phải được lưu trữ ở phía máy khách và yêu cầu của khách hàng phải tự cung tự cấp. Vậy ... làm thế nào chúng ta có thể lưu trữ các phiên của khách hàng? Tìm kiếm trên internet Tôi đã tìm thấy một số phương pháp làm thế nào để nhận ra điều này. Ví dụ: chúng tôi gửi tới mã thông báo được mã hóa của khách hàng chứa id của khách hàng (nick ... v.v), như mã thông báo = AES (id, secretKey); và sau đó chúng tôi ủy quyền cho người dùng mọi mã thông báo giải mã yêu cầu trên máy chủ bằng khóa bí mật. Bất cứ ai có thể tư vấn bất cứ điều gì? Có thể có một cách khác để thực hiện chức năng tương tự. Thuật toán mã hóa nào sẽ thích hợp hơn cho điều này? Cảm ơn.Phiên trong các dịch vụ REST
Trả lời
Bạn nói:
Như bạn đã biết vì của REST chúng tôi không thể lưu trữ bất kỳ dữ liệu khách hàng trên máy chủ , dữ liệu phải được lưu trữ về phía khách hàng và yêu cầu của khách hàng phải thể tự cung tự cấp.
REST không cho biết bạn không thể lưu trữ dữ liệu khách hàng trên máy chủ; nó chỉ nói rằng bạn không nên lưu trữ trạng thái ứng dụng ở đó, bạn có thể nghĩ là "khách hàng này đang cố gắng làm gì".
Nếu bạn chủ yếu cố gắng chỉ có khái niệm về người dùng được xác thực, thì cookie đăng nhập chuẩn sẽ hoạt động tốt và không "không ổn định".
giải thích hợp lý duy nhất tôi tìm thấy. Hy vọng rằng nó là chính xác – GorillaApe
Tất cả đều có câu trả lời cho câu hỏi này: tại sao bạn cần khái niệm "phiên" ngay từ đầu?
Nếu bạn cần đảm bảo rằng khách hàng chuyển cookie đại diện cho tập hợp thông tin xác thực, hãy xem xét thay vì để khách hàng chuyển chúng làm tiêu đề xác thực HTTPS với mỗi yêu cầu thay thế.
Nếu bạn cần một số quy tắc định tuyến dính (để đảm bảo yêu cầu của khách hàng được gửi đến một máy chủ cụ thể), hãy xem xét sử dụng cơ hội này để loại bỏ đoạn thẳng kiến trúc đó vì đó là cách nhanh nhất để giết cơ hội khả năng mở rộng trong tương lai. Thay vào đó, hãy chọn tùy chọn máy chủ của bạn.
Nếu bạn hoàn toàn phải định tuyến đến một nút cụ thể, hãy thử yêu cầu khách hàng chuyển đủ dữ liệu nhận dạng mà bạn có thể sử dụng để băm hoặc phân phát khách hàng xuống một "làn bơi" cụ thể. Bạn có thể chia nhỏ mọi thứ dựa trên tên người dùng của họ, ví dụ.
- 1. REST WCF dịch vụ và phiên trong ASP.NET
- 2. Dịch vụ web REST trong python 3?
- 3. Tắt các ví dụ XML trong dịch vụ WCF REST?
- 4. Các phiên dịch vụ và tin nhắn dịch vụ Azure
- 5. Mật khẩu bảo vệ dịch vụ REST?
- 6. Bắt đầu với Rally REST API dịch vụ web REST
- 7. Dịch vụ Web REST REST, Tomcat, Eclipse và 404 của
- 8. Sử dụng dịch vụ REST từ WCF
- 9. Dịch vụ REST REST không nhận ra yêu cầu PUT
- 10. Dịch vụ web REST và các khóa API
- 11. Sử dụng dịch vụ web REST XML
- 12. Lỗi với dịch vụ REST tốn thời gian trong Python
- 13. Dịch vụ REST tên miền chéo AJAX REST Các tiêu đề HTTP
- 14. Dịch vụ RESTful phiên bản?
- 15. Tuần tự hóa trong dịch vụ web REST REST dưới dạng chuỗi ISO-8601
- 16. Dịch vụ Jersey REST là Thành phần mùa xuân
- 17. Dịch vụ web REST: Symfony 2 vs silex
- 18. Node.JS Đợi gọi lại dịch vụ REST yêu cầu HTTP
- 19. Gọi dịch vụ web REST từ trang asp cổ điển
- 20. Sự khác biệt giữa dịch vụ web OData và REST
- 21. Sử dụng Bản đồ Bing Dịch vụ REST trên BlackBerry?
- 22. Giao thức khám phá dịch vụ web REST (json)
- 23. Hạn chế lớn của dịch vụ web REST
- 24. Dịch vụ REST tài nguyên khóa tổng hợp
- 25. WCF Rest xử lý lỗi dịch vụ & WebChannelFactory
- 26. Xác thực người dùng trên dịch vụ Jersey REST
- 27. Cuộc gọi jQuery ajax tới dịch vụ REST
- 28. Phím xác thực mã vạch cho dịch vụ REST
- 29. Dịch vụ REST của cuộc thăm dò với Node.js
- 30. Dịch vụ web Java Async REST sử dụng Jersey?
Bạn đang cố gắng đạt được điều gì với các phiên khách hàng được duy trì này? Nó chỉ đơn giản là một tối ưu hóa hiệu suất của quá trình xác thực? –