【发布时间】:2011-05-15 07:05:52
【问题描述】:
我有一个控制器动作,预计会被 jquery 调用。这是电话:
$.ajax({
url: "/comments.json",
type: "POST",
dataType: "json",
data: {
commentable_id: $("#addCommentForm").attr("data-site-update-id"),
commentable_type: 'SiteUpdate',
content: $("#addCommentForm textarea#content").val()
},
success: function(comment) {
}
});
它工作得很好,但由于某种原因,“current_user”在控制器内部是 nil。如果我强制authenticate_user!作为一个过滤器,rails 返回一个 HTTP Unauthorized。
如何传递身份验证详细信息,以便此控制器操作与设计一起使用?更好的是,有没有办法让这个透明?我不想一遍又一遍地为每个 ajax 请求传递身份验证详细信息...
在 Java 中,一旦用户登录......他们就登录了。您不再需要从 url 到 url 传递任何东西——它在某个地方的会话中,并且一切都透明地发生。有没有办法用rails做到这一点?我不想关注这些细节。
谢谢
编辑:解决方案是将以下内容添加到您的 javascript 某处:
$(document).ajaxSend(function(e, xhr, options) {
var token = $("meta[name='csrf-token']").attr("content");
xhr.setRequestHeader("X-CSRF-Token", token);
});
【问题讨论】:
标签: ruby-on-rails ruby authentication controller devise