Подтвердить что ты не робот

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. Но я хочу полностью удалить последние две строки, возможно ли это?

Я пробовал несколько разных комбинаций из документации, которая, похоже, делает это, но также отменяет некоторые полезные, такие как пароль/новый и пароль/редактировать маршруты.

4b9b3361

Ответ 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