Rails - разработать, как я могу отключить некоторые маршруты по умолчанию?
Я хочу полностью отключить маршруты /users/sign _in для получения и публикации.
Мне удалось успешно переопределить их, используя следующее:
devise_for :users do
get "/admin" => "devise/sessions#new", :as => :new_user_session
post "/admin" => "devise/sessions#create", :as => :user_session
end
И когда я запускаю маршруты рейка, я вижу следующее:
new_user_session GET /admin(.:format) {:controller=>"devise/sessions", :action=>"new"}
user_session POST /admin(.:format) {:controller=>"devise/sessions", :action=>"create"}
new_user_session GET /users/sign_in(.:format) {:action=>"new", :controller=>"devise/sessions"}
POST /users/sign_in(.:format) {:action=>"create", :controller=>"devise/sessions"}
Я могу получить доступ к знаку из /admin, а также из /users/sign _in. Но я хочу полностью удалить последние две строки, возможно ли это?
Я пробовал несколько разных комбинаций из документации, которая, похоже, делает это, но также отменяет некоторые полезные, такие как пароль/новый и пароль/редактировать маршруты.
Ответы
Ответ 1
Решение Каца больше не работает, как отметил Цирулли.
Попробуйте следующее.
devise_for :users, :skip => [:sessions]
as :user do
get "/admin" => "devise/sessions#new", :as => :new_user_session
post "/admin" => "devise/sessions#create", :as => :user_session
end
Ответ 2
Вы можете добиться этого, используя опцию: skip для devise_for:
devise_for :users, :skip => [:sessions] do
get "/admin" => "devise/sessions#new", :as => :new_user_session
post "/admin" => "devise/sessions#create", :as => :user_session
end
Когда я запускаю маршруты рейка после этого, я получаю только:
new_user_session GET /admin(.:format) {:controller=>"devise/sessions", :action=>"new"}
user_session POST /admin(.:format) {:controller=>"devise/sessions", :action=>"create"}
Ответ 3
Здесь
devise_for :users, skip: [:sessions,:registrations], controllers: {
omniauth_callbacks: "users/omniauth_callbacks"
}
Ответ 4
когда вы пропускаете контроллер sessions
, вы чаще всего добавляете действие destroy
к своим настраиваемым маршрутам:
as :user do
get "/admin" => "devise/sessions#new", :as => :new_user_session
post "/admin" => "devise/sessions#create", :as => :user_session
delete "/logout" => "devise/sessions#destroy", :as => :destroy_user_session
end