Đây là cố gắng của tôi mà làm việc với Rails 3 & 4. Mã này trích xuất một tham số khi đăng xuất và chuyển hướng người dùng đến trang đăng nhập tùy chỉnh nếu không nó chuyển hướng đến trang đăng nhập chung. Bạn có thể dễ dàng trích xuất :controller
theo cách này. Điều khiển phần:
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
Và kiểm tra rất quan trọng cũng như:
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
nó dường như không phải là một cách tiếp cận đúng chút nào. Điều gì sẽ xảy ra nếu một số máy chủ khác là liên kết giới thiệu? – Eru
http: // localhost: 3000 ok test guys thanks thanks :) –
Vui lòng @ tvalent2, chọn lại câu trả lời đúng. Các upvotes nói một mình. –