Proprio semplice add questo metodo per application_controller.rb
protected
def authenticate_user!
if user_signed_in?
super
else
redirect_to login_path, :notice => 'if you want to add a notice'
## if you want render 404 page
## render :file => File.join(Rails.root, 'public/404'), :formats => [:html], :status => 404, :layout => false
end
end
E si può chiamare questo metodo su before_filter
un altro controller che si desidera.
esempio:
class HomesController < ApplicationController
before_filter :authenticate_user!
## if you want spesific action for require authentication
## before_filter :authenticate_user!, :only => [:action1, :action2]
end
non dimenticare aggiungere login_path
in routes.rb
devise_scope :user do
match '/sign-in' => "devise/sessions#new", :as => :login
end
nota: Io uso sempre questo modo, quando gioco con disposizione testamentaria per la mia autenticazione app .. (rotaie 3.2 e rotaie 4.0.1)
Grazie, ha funzionato. Mi sono anche reso conto di aver impostato erroneamente le mie rotte - ho inserito molti di loro in un blocco "authenticated: user", ecco perché stavo ottenendo 404 cercando di accedervi quando si è disconnessi. – Gdeglin
Grazie. questo ha funzionato benissimo per me ma ha creato altri problemi.Per esempio, quando vado a modificare una registrazione utente, ottengo un errore argomento (dicendo un numero errato di argomenti: 1 per 0) e puntando alla riga 'def authenticate_user!'. Domanda pubblicata qui: [collegamento] (http://stackoverflow.com/questions/25170716/devise-ror-argument-error-when-editing-user-registration). Apprezzo l'aiuto! – orky
Grazie ** GeekToL ** –