ruby-on-rails – 跨子域访问会话(Rails 4)
发布时间:2020-12-17 04:19:30 所属栏目:百科 来源:网络整理
导读:嗨我有一个多租户rails 4应用程序,有一个简单的登录解决方案.但是,每个用户都有一个用户在登录后重定向到的子域. 问题是,当他们到达子域时,由于已知问题会话不在子域之间共享,因此他们不再登录. 我已经尝试了几个不同的解决方案来解决这个问题,但是我没有让
嗨我有一个多租户rails 4应用程序,有一个简单的登录解决方案.但是,每个用户都有一个用户在登录后重定向到的子域.
问题是,当他们到达子域时,由于已知问题会话不在子域之间共享,因此他们不再登录. 我已经尝试了几个不同的解决方案来解决这个问题,但是我没有让会话在子域中持续存在.我相信这可能是由于我的开发环境? 我已经尝试了这个问题的所有答案: 似乎没什么用.这里有什么我想念的吗?它是浏览器还是导轨4或….?我该如何处理这个问题? 编辑: Imagesite::Application.config.session_store :cookie_store,key: '_imagesite_session',:domain => "imagesite.dev" 我也试过“.imagesite.dev”和:全部. 我也尝试了Evan在上面链接的另一个问题中描述的解决方案. 子域的示例:“ole.imagesite.dev”或“ole2.imagesite.dev”只是基于用户输入的子域的基本子域. 解决方法
我终于解决了!
我在创建auth_token cookie时必须设置域.像这样: cookies[:auth_token] = { value: user.auth_token,domain: ".lvh.me" } 并像这样删除cookie: cookies.delete(:auth_token,:domain => '.lvh.me') 完整的例子: def create user = User.find_by_username(params[:username]) user ||= User.find_by_email(params[:username]) if user && user.authenticate(params[:password]) # session[:user_id] = user.id if params[:remember_me] cookies.permanent[:auth_token] = { value: user.auth_token,domain: ".lvh.me" } else cookies[:auth_token] = { value: user.auth_token,domain: ".lvh.me" } end redirect_to root_url(:subdomain => "#{current_user.subdomain}"),notice: "You are now loged in." else flash.now.alert = "Email or password is invalid" render "new" end end def destroy #session[:user_id] = nil cookies.delete(:auth_token,:domain => '.lvh.me') redirect_to root_url(:subdomain => false),notice: "Loged out" end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |