python - 在 Django 中使用推送器对用户进行身份验证

标签 python django django-forms django-views pusher

我对使用推送器在 Django 中的身份验证如何工作感到有点困惑 我想实现一对一聊天系统,所以我想我将使用需要身份验证才能订阅 channel 的私有(private) channel 。 .. 我读了there端点是您希望推送器发布到的 url,我添加了一个 url 来测试它是否有效,但每次状态返回 403 并且它似乎没有进入我创建的用于测试它的 View 所以有什么想法吗?这是我的代码示例:

message.html

var channel = pusher.subscribe('private-test');
channel.bind('message', function(data) {
  var $message = $('<div class="message"/>').appendTo('#messages');
  $('<span class="user"/>').text(data.user).appendTo($message);
  $('<span/>').text(data.message).appendTo($message);
});;

Pusher.channel_auth_endpoint = 'test/'; 
Pusher.channel_auth_transport = 'ajax';

channel.bind('pusher:subscription_succeeded', function(status) {
    alert(status);
});

channel.bind('pusher:subscription_error', function(status) {
    alert(status);
});

Views.py:

def testUser(request,user_name):
print 'Test Passed'
return render_to_response('message.html', {
    'PUSHER_KEY': settings.PUSHER_KEY,'channel_variable':request.user.id,'other_var':'3', 
}, RequestContext(request)) 

当我检查它发布到的 url 时,在我的 cmd 中我发现它是正确的并且它与我在 urls.py 中输入的相匹配但我仍然不知道为什么它没有进入我的 View

最佳答案

我不了解 Django,但框架很有可能正在拦截调用以防止 CSRF (Cross site resource forgery) .

Django 文档在这里讨论 CSRF: https://docs.djangoproject.com/en/dev/ref/contrib/csrf/

与许多框架一样,您需要提供一个 CSRF token 作为对 authentication endpoint 的 XHR/AJAX 调用的一部分。 ,或覆盖框架拦截(以某种方式)。

查看 Pusher 构造函数的 auth 部分 options parameter .在那里您会找到一个如何传递 CSRF token 的示例。

关于python - 在 Django 中使用推送器对用户进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12057365/

相关文章:

django - Django 表单模型中的日期时间字段

python - 在 pandas 中删除基于时间的空组

python : Reverse Order Of List

python - 具有一个键和两个值的字典 转为 CSV

python - 匹配多列上的 CSV(列并不总是匹配!)

Django 动态表单,带有 HTML 数组的表单集

Django REST框架: create JSON fragments from string

mysql - Django Admin 外键从单个 SQL 查询中下拉

Django - 动态选择字段 - 静态目录中的所有图像

python - 没有唯一参数的唯一值错误