[英]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.