对于同一个应用程序,我有两个不同的域,例如。 test1.com.au 和 test2.co.uk 。我正在尝试让登录后来自各个国家的用户重定向到相应的网址,即如果澳大利亚用户从test2.co.uk登录,则应该登录并重定向到test1.com.au主页。我已使用devise进行身份验证。 是否有可能通过js获得?当用户登录时,通过ajax请求获取用户所在的国家/地区,然后在不同的url上发送请求。 但是,此方法经过设计创建操作,但并未真正登录用户,即设计 authenticate_user 方法具有 current_signed_in_user 无效。
$(document).ready(function() {
var url, email;
$("form#new_spree_user").submit(function(e){
e.preventDefault();
alert('Default prevent');
email = document.getElementById('spree_user_email').value;
$.ajax("/return_host", {
type: "GET",
beforeSend: $.rails.CSRFProtection,
data: {
email: email
},
success: function(data) {
host = data["host"];
console.log(host);
url = host + "/spree_users/sign_in";
$.post(url, $('form').serialize())
}
});
});
});
在会话控制器上返回主机方法:
def return_host
member = User.find_by(email: params[:email])
country_code = member.site.code
host = country_code == 'UK' ? 'http://test2.co.uk' : 'http://test1.com.au'
respond_to do |format|
format.json { render :json => { 'host': host } }
end
end
解决这个问题的最佳方法是什么?