2

我对使用推送器在 Django 中的身份验证如何工作感到有点困惑我想实现一个一对一的聊天系统,所以我想我将使用需要身份验证的私人频道,然后才能订阅频道......我在那里读到端点是您希望推送器发布到的 url,我添加了一个 url 来测试它是否正在工作,但是每次状态返回 403 并且它似乎没有进入我为测试它而创建的视图所以任何想法? 这是我的代码示例:

消息.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);
});

视图.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 的那个匹配,但我仍然不知道为什么它没有进入我的视图

4

1 回答 1

1

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

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

与许多框架一样,您需要提供 CSRF 令牌作为对身份验证端点的 XHR/AJAX 调用的一部分,或者覆盖框架拦截(以某种方式)。

查看Pusher构造函数选项参数的 auth 部分。在那里,您将找到一个如何传递 CSRF 令牌的示例。

于 2012-08-21T20:00:42.357 回答