2015-02-19 16 views
10

Tôi dự định phát triển hệ thống thương mại điện tử microservice làm bằng chứng về khái niệm. Kiến trúc bao gồm 3 thành phần:Phiên trong kiến ​​trúc Microservice cho hệ thống thương mại điện tử

  • một javascript dựa trên ứng dụng trang duy nhất, mà gửi yêu cầu AJAX để

  • một máy chủ (API Gateway) với một API REST mà nguồn cấp dữ liệu dữ liệu JSON nhận bằng cách gọi các dịch vụ khác

  • 3 dịch vụ: CatalogProvider, CustomersProvider, CheckoutProvider

Còn bây giờ các dịch vụ tất cả đều là điểm cuối API của hệ thống cửa hàng Magento.

Khi tôi cố đăng nhập người dùng vào hệ thống Magento của họ bằng cách gửi yêu cầu tới REST Api rõ ràng máy chủ không nhớ phiên khi gửi yêu cầu tiếp theo.

Ngoài ra, tôi xử lý giỏ hàng ở phía máy chủ với Magento và thêm/cập nhật/xóa các mục bằng các lệnh gọi REST Api. Ở đây, các mục được thêm sẽ bị mất khi gửi yêu cầu tiếp theo khi phiên bị mất.

Vì vậy, câu hỏi của tôi là:

Có cách nào để giải quyết các vấn đề liên quan đến xử lý phiên trong kiến ​​trúc microservice?

+0

Xin chào, bạn đã tìm thấy giải pháp tốt cho vấn đề của mình chưa? Có thể chia sẻ với người khác không? Bạn có một thời gian để kiểm tra/thực hiện một đề xuất câu trả lời cuối cùng nếu tôi bắt đầu một tiền thưởng mới? Vấn đề bản thân tôi quan tâm nhưng tôi hiện không có một trường hợp hoặc thời gian để kiểm tra nó :) Cảm ơn – JonaPkr

+0

Không trực tiếp liên quan đến php nhưng ... http://presos.dsyer.com/decks/microservice-security.html –

Trả lời

3

Tôi khuyên bạn nên xem xét xác thực dựa trên mã thông báo.

Ngoài ra, mã thông báo web JSON cũng có thể được bạn quan tâm.

+0

Cảm ơn cho đề xuất của bạn. Bạn có biết bất kỳ nguồn hữu ích và tốt nào để đọc về các khái niệm này không? – Rouzbeh

0

Bạn có thể duy trì trạng thái người dùng thành bảng.

Khi người dùng đăng nhập, hãy tạo một id duy nhất và lưu nó vào bảng có dấu thời gian hiện tại và IP của khách hàng, phía khách hàng tạo cặp giá trị khóa và lưu nó vào cookie. Sử dụng nó như một phiên.

Bạn hiện có nhiều thứ để kiểm tra sự tồn tại của người dùng.

0

nếu u đang sử dụng jvoid mà là một dự án của schgoni (chủ sở hữu magento của) nó tạo id phiên và lưu trữ nó bên trong mysql và nó đã có module bảo mật mùa xuân BUILTIN

Đối với chứng thực microservice i OAuth2 kiến ​​trúc an ninh dựa sẽ tốt hơn tôi nghĩ.Sử dụng mã thông báo oauth tại các cuộc gọi còn lại sẽ giải quyết vấn đề auth

0

Điều gì về việc tạo thêm một microservice - SessionProvider? Dịch vụ sẽ chịu trách nhiệm tạo và lưu trạng thái phiên và các biến, mỗi phiên sẽ được xác định theo id phiên duy nhất, các dịch vụ khác có thể tương tác với SessionProvider thông qua id này.

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