2013-08-06 40 views
5

Tôi hiện đang tạo một trang web có định hướng rất cơ sở dữ liệu giống như Stack Overflow. Câu hỏi của tôi là làm thế nào để xử lý các phiên sẽ đi qua một số máy chủ (tôi có kế hoạch sử dụng máy chủ AWS để tự động nhân rộng).Các phiên xử lý cho khả năng mở rộng

Hiện tại tôi tin rằng tôi không nên sử dụng Xác thực biểu mẫu cho mục đích mở rộng và tốc độ. Thay vào đó, tôi sẽ có một bảng trong cơ sở dữ liệu được gọi là phiên lưu trữ thông tin sau: SessionID, UserID, ExpDate, CreateDate, IP, Trạng thái ('LogedIn', 'LogedOut', 'Expired').

mối quan tâm lớn nhất của tôi sẽ được bảo mật từ điểm đứng của cookie và không có kinh nghiệm để xem một kịch bản cổ chai khi tôi có rất nhiều máy chủ đang chạy.

Vui lòng cung cấp cho tôi thông tin chi tiết của bạn. Tôi cũng muốn biết những người khác và Stack Overflow đang xử lý tình huống khó xử này như thế nào.

FYI: Đối với cùng một lý do tôi đang sử dụng PetaPoco thay vì Entity Framework như tôi đã có thể cạo khoảng 600ms bởi làm như vậy.

Cảm ơn sự giúp đỡ của bạn!

+0

Đừng né tránh các công cụ xác thực đã biết vì bạn có trang trại. Có nhiều cách để thực hiện công việc đó. Các phiên cố định hoạt động tốt nhất và dễ nhất để chống lại nhưng yêu cầu phần cứng cơ sở hạ tầng của bạn hỗ trợ nó. – Jay

Trả lời

2

Tôi không biết bất kỳ vấn đề về khả năng mở rộng nào khi sử dụng Xác thực biểu mẫu. Về cơ bản, nó mã hóa một mã thông báo ủy quyền vào một cookie và cookie được trình bày cho máy chủ theo từng yêu cầu. Việc sử dụng cookie thay vì phiên trong quá trình sẽ cho phép khả năng mở rộng vì nó không được gắn với bất kỳ máy chủ cụ thể nào.

Các mã hóa sử dụng một giá trị machineKey được lưu trữ trên máy chủ để phá vỡ mã hóa sẽ yêu cầu nhận được một tổ chức của các machineKey.

Nói chung, tôi cố gắng không để thực hiện uỷ quyền của riêng tôi và thay vào đó cố gắng gắn bó với giải pháp out-of-the-box đã được thử nghiệm.

Cách tiếp cận sử dụng cửa hàng phiên của bạn vẫn yêu cầu sử dụng cookie để lưu trữ một số loại con trỏ tới cửa hàng phiên. Tùy thuộc vào việc triển khai của bạn, có thể dễ dàng đoán thông tin này và dễ dàng mạo danh người khác.

EDIT:

Vì bạn đang chạy trên AWS, tôi sẽ đề nghị bạn tận dụng lợi thế của ElastiCache để giảm số lượng các DB lượt truy cập.

+0

+1, giải thích rất tốt, ngay cả khi tôi hiểu nó. –

+0

Bảo mật mẫu là an toàn và chi phí hoạt động như thế nào? – Radar5000

+1

Câu trả lời đơn giản là "rất". Cũng sẽ giúp nếu bạn đang sử dụng các trình ComponentProviders được xây dựng sẵn để thực hiện một hàm băm muối (SHA) một chiều để lưu trữ mật khẩu trong cơ sở dữ liệu. Về hiệu suất, bạn sẽ thực hiện mã hóa một lần khi người dùng đăng nhập và giải mã trên mỗi yêu cầu. Tôi sẽ không lo lắng về hiệu suất của điều này, đặc biệt nếu tải được trải ra trên nhiều máy chủ web, mà trong trường hợp của bạn sẽ được. Một gợi ý khác là sử dụng SSL để ngăn ai đó có thể đọc cookie nếu họ bằng cách nào đó quản lý để giữ nó trong khi đang chuyển tuyến (nghĩ đến điểm nóng Starbucks). –

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