2013-04-26 34 views
7

Tôi gặp sự cố nhỏ. Tôi đang phát triển một ứng dụng trong PHP được chia thành các mô-đun. Mỗi mô-đun hoàn toàn độc lập, nằm trên một máy chủ riêng biệt và có một tên miền riêng. ví dụ:Chia sẻ một SESSION trên nhiều máy chủ với các miền khác nhau

www.moduloprincipal.com.br, www.modulo2.com.br, www.modulo3.com.br, vv ...

Vấn đề là tôi cần điều đó khi người dùng để xác thực với một trong các mô-đun (hoặc) người dùng có thể truy cập cùng một mô-đun người dùng khác mà không phải xác thực lại.

Hiện tại, mỗi ứng dụng nằm trên một máy chủ khác, nhưng nếu cần thiết chúng nằm trong cùng một máy chủ, nó sẽ không có vấn đề gì.

QUAN TRỌNG:

  1. đã đọc nhiều bài, nhưng thấy không có giải pháp thực sự an toàn. Sẽ thú vị khi sử dụng OAuth?

  2. Hiện tại, ứng dụng sử dụng $ _SESSION để xác thực người dùng, nhưng bạn có thể sử dụng $ _COOKIE một cách trơn tru.

  3. Tôi đang sử dụng CodeIgniter

dịch bởi Google Translate. Xin lỗi ...

+0

Vì lý do tại sao OAuth không phải là lựa chọn đúng (và thay thế), hãy xem [http://stackoverflow.com/questions/2033026/sso-with-cas-or-oauth](http:/ /stackoverflow.com/questions/2033026/sso-with-cas-or-oauth) –

Trả lời

9

Hai tùy chọn từ đỉnh đầu của tôi mà bạn có thể khám phá:

  • Đặt tất cả các máy chủ cùng một con đường để lưu dữ liệu phiên của nó, xem session.save_path chỉ thị. Vị trí đó có thể là một chia sẻ NFS hoặc vị trí NAS mà tất cả các máy chủ của bạn có thể truy cập.

  • Tùy chọn khác là implement a database session handler, vì vậy dữ liệu phiên có thể được chia sẻ trong tất cả máy chủ của bạn truy cập cùng một máy chủ cơ sở dữ liệu. Vì vậy, hãy xem tài liệu PHP cho custom session handlers.

+7

Ông cũng có thể có một máy chủ hoạt động như một API xử lý tất cả thông tin phiên. –

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