2014-09-16 5 views
1

Я планирую использовать rabbitmq для достижения push-уведомления в своем веб-приложении.проверка подлинности на основе маркера на основе кролика (bitbitmq)

У каждого пользователя будет очередь. Я хочу, чтобы неавторизованные пользователи не подписались на очереди других людей. Можно ли это сделать, используя токен аутентификации, который должен предоставить пользователь?

В качестве обходного пути в настоящее время я думаю о django proxying rabbimq, чтобы проверить, правильно ли предоставлен токен аутентификации, и только передать запрос на rabbitmq, если он аутентифицирован ... но это кажется менее оптимальным!

+0

Почему вы считаете, что это не оптимально? Предоставляете ли вы прямой доступ к RabbitMQ для неавторизованных пользователей? Разрешают ли авторизованные пользователи напрямую обращаться к RabbitMQ? Если да, имеют ли они одни и те же учетные данные? – pinepain

+0

Я думаю, что это не оптимально, потому что rabbitmq находится на другом сервере для django, поэтому проксирование будет еще одним раундом и таким образом увеличит задержку. Однако более высокая латентность не является огромным недостатком. Это также означает, что уведомления перестают работать, если django не работает. – rikAtee

ответ

2

Вы можете достичь той же функциональности, используя exclusive очередь и разрешение RabbitMQ.

Исключительные очереди могут быть доступны только по текущему соединению, а удаляются при закрытии этого соединения. Пассивное объявление исключающей очереди другими подключениями недопустимо.

+0

было бы неплохо, за исключением того, что уведомления будут отправлены в очередь. Мы не хотим, чтобы пользователь пропускал уведомления, если они не вошли в систему в момент их возникновения. – rikAtee

+0

В этом случае взгляните на «мертвую букву», вы можете направлять сообщения, которые не заканчиваются в очереди, в очередь «по умолчанию». Или вы можете использовать подтверждение публикации с обязательным флагом. Таким образом издатель будет знать, не было ли сообщение отправлено в очередь. – Vor

+1

Может быть, это хорошая идея просто обрабатывать auth на стороне приложения и не смешивать логику приложения с логикой брокера сообщений? – pinepain

Смежные вопросы