Getとpostのルート/ 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からサインインにアクセスできます。しかし、最後の2行を完全に削除したいのですが、可能ですか?
documentation とは異なる組み合わせをいくつか試しましたが、これはそれを実行しているようですが、password/newルートやpassword/editルートなどの便利な組み合わせもオーバーライドします。
Katzのソリューションは、Cirulliが指摘したように機能しなくなりました。
次のことを試してください。
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
これは、: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"}
ここにあります
devise_for :users, skip: [:sessions,:registrations], controllers: {
omniauth_callbacks: "users/omniauth_callbacks"
}
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