2011-10-12 41 views
7

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

+0

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? –

Trả lời

8

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".

+0

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

2

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ụ.

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