Qui è la mia prova che funziona con Rails 3 & 4. Il presente Codice estrae un parametro al logout e reindirizza l'utente alla pagina di accesso personalizzata altrimenti reindirizza alla pagina di accesso generale. Puoi facilmente estrarre :controller
in questo modo. parte Controller:
def logout
auth_logout_user
path = login_path
begin
refroute = Rails.application.routes.recognize_path(request.referer)
path = subscriber_path(refroute[:sub_id]) if refroute && refroute[:sub_id]
rescue ActionController::RoutingError
#ignore
end
redirect_to path
end
E le prove sono importanti così:
test "logout to subscriber entry page" do
session[:uid] = users(:user1).id
@request.env['HTTP_REFERER'] = "http://host/s/client1/p/xyzabc"
get :logout
assert_redirected_to subscriber_path('client1')
end
test "logout other referer" do
session[:uid] = users(:user1).id
@request.env['HTTP_REFERER'] = "http://anyhost/path/other"
get :logout
assert_redirected_to login_path
end
test "logout with bad referer" do
session[:uid] = users(:user1).id
@request.env['HTTP_REFERER'] = "badhost/path/other"
get :logout
assert_redirected_to login_path
end
non sembra essere un approccio giusto a tutti. Cosa succede se qualche altro server è il referrer? – Eru
http: // localhost: 3000 ok test completo grazie ragazzi :) –
Per favore @ tvalent2, riseleziona la risposta corretta. Le upvotes parlano da sole. –