我正在构建一个 Rails 应用程序,并使用 Devise 进行身份验证。 当用户登录时,我需要对 Rails 进行 AJAX 调用,并以 JSON 形式获取属于当前用户的数据。另外,我不希望未经身份验证的用户和其他登录用户访问当前用户的资源。
我使用 jQuery 的 $.getJSON() 通过简单地指定链接地址来发出 AJAX 请求,如下所示:
$.getJSON('http://localhost:3000/users/1/photos', function(data) { console.log(data); });
到目前为止,身份验证的工作方式似乎与 HTTP 请求的工作方式相同,因此用户只能通过 AJAX 访问自己的数据。
我对 AJAX 没有太多经验,而且我根本不明白为什么它有效。当我进行 AJAX 调用时,Rails 应用程序从哪里知道我已登录?我认为我必须创建一个额外的身份验证 token 并使用它进行身份验证或在执行 AJAX 调用时设置设计 session cookie。
稍后编辑:当我进行 AJAX 调用时,我的 Rails 应用程序从哪里知道我已登录?
最佳答案
AJAX 请求 (XMLHttpRequest) 将包含与同一域的标准 HTTP 请求相同的 header 。至于从 header 中读取 cookie、查找 session 信息以及授权请求,行为是相同的。
关于jquery - 经过身份验证的用户从 jQuery 向 Rails API 发出 AJAX 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30292525/