gpt4 book ai didi

javascript - 在单独的网站上使用 ajax 登录 Rails 3 应用程序(使用 Devise 进行身份验证)

转载 作者:行者123 更新时间:2023-12-05 01:19:25 25 4
gpt4 key购买 nike

因此,我有一个使用 Devise 处理身份验证的 Rails 3 应用程序。我有另一个网站(所有客户端 javascript)正在尝试使用 ajax 基本身份验证登录此 Rails 3 应用程序,如下所示:

username = "test@testing.com"
password = "testing"
$.ajax({
'url': '/users/sign_in',
'otherSettings': 'othervalues',
'beforeSend': function(xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password))
},
sucess: function(result) {
alert('done');
}//sicc
});

它正确地命中了路线,我可以看到在 rails 端一切看起来都很好(服务器甚至认为它正在重定向),但是如果我然后尝试命中一条路线(使用 jquery,加载 json 数据)需要身份验证,我得到那个丑陋的基本身份验证 javascript 弹出告诉我我需要身份验证。

Devise 显然不使用 cookie 来存储身份验证数据,据我了解,您不能只从 javascript 访问 HttpSession ...我能做些什么吗,或者我只需要使用身份验证 token (和编写一个自定义 Controller 将其返回给我)。

编辑:

即使是具有基本身份验证的帖子也不起作用,这很奇怪(因为回想起来,是的,这是我试图到达的帖子路线)。我收到 401 Unauthenticated 错误...为什么您需要经过身份验证才能进行身份验证?不过,将类型设置为“GET”效果很好,但(再次回想起来)正在触及"new"路线而不是“创建”路线。

username = "test@testing.com"
password = "testing"
$.ajax({
'url': '/users/sign_in',
'type': 'POST',
'otherSettings': 'othervalues',
'beforeSend': function(xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password))
},
sucess: function(result) {
alert('done');
}//sicc
});

编辑:只是为了确认,应用程序 Controller 中的“protect_from_forgery”行似乎也不是问题……至少,当我将其注释掉时,我仍然遇到同样的问题。

没关系,问题似乎是当我使用基本身份验证发帖时,我在用户名中输入错误,显然处理身份验证失败的方式是弹出基本身份验证对话框(非常不优雅,顺便说一句)

解决方案:

username = "test@testing.com"
password = "testing"
$.ajax({
'url': '/users/sign_in',
'type': 'POST',
'otherSettings': 'othervalues',
'beforeSend': function(xhr) {
xhr.setRequestHeader("Authorization", "Basic " + btoa(username + ":" + password))
},
sucess: function(result) {
alert('done');
}//sicc
});

最佳答案

有什么原因不能在 POST 数据中发送用户名和密码吗?

var username = "test@testing.com";
var password = "testing";

$.ajax({
url: '/users/sign_in',
type: 'post',
data: 'username=' + username + '&password=' + password
success: function(result) {
alert('done');
}//sicc
});

关于javascript - 在单独的网站上使用 ajax 登录 Rails 3 应用程序(使用 Devise 进行身份验证),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5780385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com