Реализовать множественный вход с помощью Rails и Devise - PullRequest
2 голосов
/ 08 марта 2012

Как бы я имитировал множественный вход Google в моем приложении Rails? По сути, мне нужно разрешить пользователю входить в две или более совершенно разные несвязанные учетные записи и иметь возможность переключаться между ними без выхода из системы и каждый раз. Пользователь должен будет выполнить аутентификацию с именем пользователя и паролем один раз для каждой учетной записи, которую он желает использовать, но затем впоследствии ему не придется снова входить в эти учетные записи до истечения срока действия сеанса.

Я видел этот пост , в котором угадывается реализация Google, но я хотел бы получить несколько подсказок о том, как лучше всего подойти к этому в Rails 3.1. Я использую Devise с плагином CAS . Я предполагаю, что мне нужно переопределить метод current_user, чтобы выбрать правильный аккаунт, но я не уверен, что еще делать.

Или, может быть, я могу использовать области для этого? Проблема, однако, в том, что мне нужно произвольное количество учетных записей, вошедших одновременно.

1 Ответ

1 голос
/ 09 марта 2012

Devise не делает этого по умолчанию, и вам придется реализовать это самостоятельно.Я считаю, что лучший способ решить эту проблему - сохранить подписанный файл cookie (cookies.signed) с идентификаторами пользователей, вошедших в систему.

По сути, каждый раз, когда пользователь входит в систему, вы добавляете егоидентификатор файла cookie, если он еще не существует (для каждого входа пользователя используется обратный вызов начальника).

Теперь, когда у вас есть идентификаторы, вы можете отобразить имена входа в углу, напримерGoogle.Когда пользователь щелкает одно из имен в углу, он передает идентификатор на сервер, вы проверяете, есть ли идентификатор в подписанном файле cookie, и затем переключаетесь на этого нового пользователя, используя метод sign_in в контроллере.

...