繁体   English   中英

强制Django Channels Websocket身份验证

[英]Force Django Channels Websocket Authentication

我正在工作的网站要求使用登录所需的中间件来登录每个页面。

我正在尝试使用带有通道的websocket添加用于双向通信到客户端Web浏览器的通知。

Daphne作为界面服务器运行,manage.py runworker正在运行工作程序。

在打开连接后运行的consumers.py文件中有一个工作功能。

问题在于可以打开此连接,并且该功能可以通过任何Web浏览器运行,而无需登录。

如何在打开连接之前强制登录?

如果希望用户登录该页面,则可以使用装饰器login_required作为视图。 您首先需要导入

from django.contrib.auth.decorators import login_required

对于视图,您可以将其用作其他任何普通装饰器,例如:

@login_required
def my_view(request):
    ...

这样做是为了确保用户登录后才能查看页面。

如果您已经实现了身份验证后端,那么这会将他带到登录页面,并且在他登录后,然后重定向到您视图中的页面。 如果他已经登录,则可以直接访问该页面。

看到“ channels_api”库,他们做得很好。

您可以将@channel_session_user_from_http用作"websocket.connect" ,将@channel_session_user用作"websocket.receive"

您可以从http会话获取message.user


http://channels.readthedocs.io/zh-CN/stable/getting-started.html#authentication

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM