Дозволити лише певні маршрути в аутентифікації пристрою

Я використовую Devise omniauth для автентифікації користувачів через Facebook.

devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }

Це добре працює, але я хочу обмежити доступ користувачів до сторінки "http://app/users/sign_in"

Я можу змінити маршрути наступним чином:

devise_scope :user do 
  match '/users/auth/facebook/callback' => 'users/omniauth_callbacks#facebook'
end 

Але як же я перенаправляю користувачів, щоб не отримувати неприємні повідомлення від контролерів, які є

before_filter :authenticate_user!

Що я хочу, щоб користувачі використовували тільки devise_scope узгодження url, в іншому випадку перенаправляти їх завжди до деяких за замовчуванням "додаток # індекс" маршрут.

0

1 Відповіді

Останні розроблювані версії завжди перенаправлятимуть вас на сторінку root_url, використовуючи тільки omniauth і не використовуючи database_authenticatable. Ви можете налаштувати це, генеруючи маршрут з "new_user_session" як ім'я, що вказує на ваш "індекс програми".

1
додано
Дякую! Модифікований файл маршрутів devise_for: users,: controllers => {: omniauth_callbacks => "users/omniauth_callbacks"} do get 'users/sign_in' => 'application # about',: as =>: кінець нового_касета і також потрібно було видалити розробку моделей користувачів: параметр, що перевіряється, оскільки поле пароля не є необхідним при використанні лише опції omniauth.
додано Автор Edijs Petersons, джерело