0

Я хочу сначала перенаправить пользователя, а затем программным образом подписать пользователя.Как войти в аккаунт после перенаправления через Rails?

Я приложение мульти-tanancy, и когда пользователь пытается войти в систему на корневом домене, мое приложение должно не только перенаправить пользователя на его суб-домен, но и подписать пользователя в.

до сих пор я пытаюсь сделать это с помощью следующего кода:

# In sessions#create (Root) 
redirect_to "http://#{account.subdomain}.localhost.com:3000/users/sign_in" 
Apartment::Tenant.switch(account.subdomain) 
sign_in(:user, account.owner) # Basically, owner is the user here. 

Когда я запускаю код, он успешно перенаправляет на подобласти, но не подписывает пользователя в

я получаю. следующая ошибка:

Completed 302 Found in 93ms (ActiveRecord: 39.7ms) 

Кроме того, он не переключает schema когда я Apartment::Tenant.switch(account.subdomain), потому что после запуска Apartment::Tenant.switch(account.subdomain), когда я бегу user = User.first, запрос, который можно увидеть в журналах является:

User Load (0.9ms) SELECT "public"."users".* FROM "public"."users" ORDER BY "public"."users"."id" ASC LIMIT 1 

Здесь public соответствует schema корневого домена, а не schema поддомена.

ответ

0

(единственное) решения после того, как тонны поиска было изменить следующую строку в config/initializers/session_store.rb:

Rails.application.config.session_store :cookie_store, key: '_examples_session', :domain => :all 

Ну, это не идеальное решение любых средств, и это будет делать эту работу. То, что точно действительно ли это на самом деле поддерживает сеанс через все поддомены.

Например, если я вхожу в систему по адресу bugs.example.com, моя сессия также будет работать в и, как эти поддомены.

Я также написал before_action, который проверяет, является ли субдомен пользователем попыткой входа в систему - принадлежит пользователю или нет, если да, я разрешаю пользователю войти в систему, а если нет, я перенаправляю пользователя в субдомен, который он принадлежит, и если пользователь не принадлежит никому, я перенаправляю его на корневой URL. Опять же, через один session, пользователь сможет войти в каждый поддомен там, поэтому такого типа проверки очень важна.

 Смежные вопросы

  • Нет связанных вопросов^_^