【问题标题】:Authenticating users using pusher in django在 django 中使用 pusher 对用户进行身份验证
【发布时间】:2012-08-16 22:42:49
【问题描述】:

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

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

【问题讨论】:

    标签: python django django-forms django-views pusher


    【解决方案1】:

    我不了解 Django,但似乎框架正在拦截调用以阻止 CSRF (Cross site resource forgery)。

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-01-10
      • 2021-06-11
      • 2020-10-30
      • 2012-08-17
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 2013-03-11
      相关资源
      最近更新 更多