【发布时间】:2022-02-01 03:04:10
【问题描述】:
尝试使用带有 django 频道的 websocket 制作一些应用程序。 我有 2 个 websocket 客户端 - 一个是 web interface/js 应用程序,另一个是 python 应用程序。我想要对他们(他们的消费者)有不同的授权要求(最好是使用 AuthMiddlewareStacks 的一种方式)
我该如何实现呢?在文档中找不到答案https://channels.readthedocs.io/en/latest/topics/routing.html
这是一个“草图”。 (routing.py 不会这样工作)。
如果相关,我使用 DRF、DRF-JWT、django 频道 2。
appmain.routing.py
application = ProtocolTypeRouter({
# (http->django views is added by default)
'websocket': AuthMiddlewareStack(
URLRouter(
app.routing.websocket_cli_urlpatterns
)
),
"websocket_0": TokenAuthMiddlewareStack(
URLRouter([
app.routing.websocket_web_urlpatterns
]),
)
})
app.routing.py
websocket_cli_urlpatterns = [
path('ws/app/<str:var1>/<str:var2>/', consumers.CliConsumer),
]
websocket_web_urlpatterns = [
path('ws/app/<str:var1>/', consumers.WebConsumer),
]
谢谢!
【问题讨论】:
-
我也面临同样的问题。你的问题解决了吗?
-
并非如此。我最终在 websocket 消费者中处理授权(部分)
标签: python django django-rest-framework django-channels