Tôi đang cố gắng xây dựng một ứng dụng trò chuyện dựa trên sails.js. Url cho các tin nhắn từ một cuộc trò chuyện cụ thể như sau:Cấp phép Sails.js cho các yêu cầu ổ cắm
/api/chat/:id/messages
Khi tôi yêu cầu url này với XHR, nó cung cấp một cookie phiên và sails.js xây dựng một đối tượng session. Tôi có thể dễ dàng kiểm tra quyền của người dùng để đọc tin nhắn từ cuộc trò chuyện cụ thể.
Tuy nhiên, tôi cần yêu cầu url này bằng socket.io để khách hàng có thể đăng ký tất cả các thay đổi trong tương lai của bộ sưu tập messages
.
Khi tôi yêu cầu url này bằng socket.io, không có cookie phiên nào được đặt và phiên sails.js trống. Vì vậy, tôi không thể kiểm tra quyền của người dùng ở phía máy chủ.
Tôi hiểu rằng yêu cầu ổ cắm không phải là yêu cầu HTTP. Họ không tự cung cấp bất kỳ cookie nào.
Có cách giải quyết đơn giản nào không?
Để làm rõ - bạn đang gặp phải vấn đề giữa nhiều miền, phải không? Như bạn đang nhúng một tập lệnh trên www.foo.com và mở một ổ cắm vào www.bar.com? – mikermcneil
Không, Mike - đó không phải là vấn đề giữa nhiều miền. Cuối cùng tôi đã tìm thấy câu trả lời và đăng nó dưới đây. Bạn phải truy cập đối tượng phiên socket của bạn theo một cách khác. P.S. Có lẽ bạn nên triển khai giải pháp này vào lõi sails.js. – alevkon