2011-12-14 44 views
6

Tôi có để phát triển ứng dụng nhiều địa điểm với dấu hiệu duy nhất về các lĩnh vực trên (giống như tài khoản với nhiều dịch vụ của Google như Gmail, tài liệu, google + google):Ứng dụng nhiều trang có đăng nhập một lần trên các tên miền trong Rails?

multi applications, multi domains, single sign on

  • Để sử dụng childen sử dụng các trang web phải ký trên trang web mẹ.
  • Mỗi trang web có logic riêng của mình ngoại trừ đăng nhập, điểm và hóa đơn của người dùng.
  • Từ ứng dụng con tôi phải có khả năng đăng nhập vào tài khoản người dùng toàn cầu , chi tiêu điểm người dùng và tạo hóa đơn cho một số dịch vụ.
  • Mẫu đăng ký, danh sách hóa đơn và bảng điều khiển để quản lý điểm là chỉ có thể từ trang web/ứng dụng mẹ.

Chiến lược tốt nhất để thực hiện điều này trên Rails 3.1 là gì? Khả năng mở rộng, hiệu suất và bảo mật là rất quan trọng.

  • Ứng dụng đơn hoặc nhiều đường ray?
  • Một hoặc nhiều cơ sở dữ liệu?
  • Dịch vụ toàn cầu trong ứng dụng chính hoặc dưới dạng ứng dụng/công cụ riêng biệt?
  • Cách triển khai đăng nhập một lần? Id phiên duy nhất trong DB hoặc một cái gì đó như facebook oauth?
  • Cách triển khai điểm chi tiêu và tạo hóa đơn theo yêu cầu từ trang web con?
+0

tiếp cận những gì đã làm bạn mất? – Karolis

+0

Từ câu trả lời @ david-sulc, với '@ token.get ('/ customaction')' để nhận dữ liệu tùy chỉnh. – rogal111

Trả lời

5

Bạn sẽ có thể triển khai điều này bằng cách sử dụng OmniAuth với nhiều ứng dụng Rails (và độc lập). Những điều này sẽ được quan tâm:

Blog bài về đề tài này: http://blog.joshsoftware.com/2010/12/16/multiple-applications-with-devise-omniauth-and-single-sign-on/

+0

Cảm ơn, bây giờ làm thế nào để thực hiện các yêu cầu để cha mẹ ví dụ như. "chi tiêu điểm người dùng" phương pháp. Oauth2 có '@ token.get ('/ customaction')', nó có thích hợp không? – rogal111

-1

Vì vậy, giả sử bạn tạo Mô hình User trong ứng dụng chính và di chuyển nó. Sau đó, những gì bạn cần làm là truy cập Datbase này từ các Ứng dụng khác. Không có vấn đề gì . Trước tiên, bạn cần phải thêm định nghĩa Database Connection của ứng dụng chính cho config/database.yml của ứng dụng con như thế này:

parent_connection: 
    adapter: your_adapter_here 
    host: your_host_here 
    username: username 
    password: password 
    database: main_application_production 

Sau đó, bạn tạo ra một mô hình được gọi là tài khoản nhưng không với scaffolder hoặc sth. như thế này. Chỉ cần tạo tệp theo cách thủ công như sau:

class User < ActiveRecord::Base 
    establish_connection :parent_connection # This uses the specified connection 
end 

Trường hợp mặc định kết nối được chọn là tên khớp với tên môi trường. Bạn chỉ cần chỉ định các biến thể. Vì vậy, bây giờ bạn có thể truy cập vào lớp User như trong ứng dụng chính.

+0

Ok, tôi biết cách thiết lập kết nối từ mô hình đến DB được chọn, nhưng đây là một phần nhỏ của toàn bộ vấn đề. Tôi cần một mẫu/mô hình/chiến lược/mẫu thiết kế giải pháp/mềm để giải quyết vấn đề với khả năng mở rộng, hiệu suất và bảo mật. – rogal111

+0

-1, thiết kế kém để ghép nối hai ứng dụng trên một dòng cơ sở dữ liệu. sử dụng các dịch vụ web –

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