2017-01-03 71 views
1

我使用公寓設計創業板穆蒂租戶和認證。設計:登錄用戶,並重定向到子域

我在根域URL(example.com)中有一個sign_up頁面,我從中獲取用戶的子域詳細信息。

我需要sign_in用戶成功保存記錄並重定向到新的子域(sub.example.com)。

公寓架構:

帳戶=>通用於所有模式(公共)

用戶=> seperately會爲每個模式(私人)

這個RegistrationController

class Users::RegistrationsController < Devise::RegistrationsController 

    ... 
    ... 

    def create 
    ActiveRecord::Base.transaction do 
     @account = Account.new(account_params) 
     if @account.valid? 
     # Create & switch to the new tenant 
     Apartment::Tenant.create(@account.subdomain) 
     Apartment::Tenant.switch!(@account.subdomain) 
     @account.save 

     sign_in(:user, @account.user) 
     redirect_to root_url(subdomain: "#{Apartment::Tenant.current}") 
     else 
     render :action => 'new' 
     end 
    end 
    end 

    ... 
    ... 

    protected 
    def account_params 
    params.require(:account).permit(:name, :subdomain, user_attributes: [:first_name, :last_name, :email, :password, :password_confirmation]) 
    end 
end 

上面的代碼成功地重定向到新的子域,但是,雖然我在重定向之前在用戶中進行簽名,但它並未在用戶中籤名。

請人幫我將用戶重定向爲signed_in到新的子域。

謝謝。

+0

是否重定向到'root_url'保留會話cookie? – 31piy

+0

@ 31piy,我試圖消除在root_url認證,並試圖在打印控制器動作會議'p會話[「warden.user.user.key」]',但它返回'nil' –

+0

請檢查會話ID之前相同並在重定向之後。 – 31piy

回答

0

最後,加入:domain => :allsession_store的rootdomain :domain => 'example.com'選項,我在this答案找到解決這個問題。

配置/初始化/ session_store.rb

config.session_store :cookie_store, :key => '_domain_session', :domain => :all 

(或)

config.session_store :cookie_store, :key => '_domain_session', :domain => 'example.com'