2011-12-07 18 views
23

Quiero deshabilitar completamente las rutas/users/sign_in para obtener y publicar.Rieles: ¿Cómo puedo deshabilitar algunas rutas predeterminadas?

que fue capaz de anular con éxito utilizando la siguiente:

devise_for :users do 
     get "/admin" => "devise/sessions#new", :as => :new_user_session 
     post "/admin" => "devise/sessions#create", :as => :user_session 
    end 

Y cuando corro rutas rastrillo que ver lo siguiente:

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"} 

que puede acceder el signo de/admin como bien como desde/users/sign_in. Pero quiero eliminar completamente las dos últimas filas, ¿es posible?

Probé algunas combinaciones diferentes del documentation que parece hacerlo pero también anula algunas útiles, como la contraseña/nuevas y las rutas de contraseña/edición.

Respuesta

21

solución de Katz ya no funciona como se ha señalado por Cirulli.

Intente lo siguiente.

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 
21

Esto se puede conseguir mediante el uso de la opción: saltar a 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 

Cuando corro rutas rastrillo después de eso, me sale solo:

new_user_session GET /admin(.:format)    {:controller=>"devise/sessions", :action=>"new"} 
     user_session POST /admin(.:format)    {:controller=>"devise/sessions", :action=>"create"} 
+0

muchas gracias por responder a mi pregunta! También agregué esta eliminación "/ logout" => "idear/sesiones # destruir",: as =>: destroy_user_session para el cierre de sesión y la funcionalidad es exactamente lo que quería. :) – JohnDel

+3

Parece que ya no funciona. 'devise_for' parece que está ignorando el bloque. –

1

cuando se salta sessions controlador, la mayoría añade destroy acción para sus rutas personalizados también:

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 
5

Aquí es

devise_for :users, skip: [:sessions,:registrations], controllers: { 
    omniauth_callbacks: "users/omniauth_callbacks" 
} 
Cuestiones relacionadas