如何向Rails中的需要验证的操作发出AJAX请求?

问题描述:

我想向使用before_filter验证用户的Rails控制器发送AJAX请求。当请求被发送的问题是,在服务器要求进行身份验证,即使用户已经登录如何向Rails中的需要验证的操作发出AJAX请求?

这里是我的AJAX请求:

$.ajax({ 
    type: 'DELETE', 
    url: "/messages/delete_all", 
    data: [1,2,4], 
    success: function() { 
     console.log("Your request is received.") 
    } 
}); 

当用户从浏览器中点击delete_all,它工作,但与AJAX它没有。是什么赋予了?

编辑:它可能与authenticity_token有关吗?

+0

你用什么样的认证?是否像http-basic-auth? – Wukerplank 2011-03-25 07:28:43

+0

是的,我认为是。我正在使用Devise,但我看到的弹出窗口对于http-basic-auth来说很典型。 – picardo 2011-03-25 07:30:22

也许这个问题会有所帮助:Using javascript with the twitter API

的解决方案提出,应该是这个样子,你的情况

$.ajax({  
    type: 'DELETE', 
    url: "/messages/delete_all", 
    data: [1,2,4], 
    beforeSend: function(xhr) { 
    xhr.setRequestHeader("Authentication", "Basic " + encodeBase64(username + ":" + password) 
    }, 
    success: function() { 
    console.log("Your request is received.") 
    } 
}); 
+0

这是否安全?另外,我要在哪里存储和罚款用户名和密码?用户使用Facebook登录。 – picardo 2011-03-25 17:17:32

+0

它与基本身份验证一样安全。以纯文本格式存储密码和用户名是一个坏主意。如果用户直接输入信息,它应该是很好的国际海事组织。 – polarblau 2011-03-25 21:28:14