2012-10-18 28 views
5

Devise không chuyển hướng đến url được cung cấp bởi after_sign_in_path_for. Thay vào đó, nó thực sự gọi số after_sign_in_path_for tùy chỉnh của tôi. Nó tính toán url, mà tôi mong đợi nó để tính toán, nhưng sau đó chuyển hướng không xảy ra. Nó vẫn còn ở trang sign_in, nhưng việc đăng nhập thực sự không diễn ra.Devise after_sign_in_path_for hoạt động, nhưng chuyển hướng không xảy ra

Tôi đã cố gắng một vài phiên bản của devise:

gem 'devise' 

gem 'devise', :git => 'git://github.com/plataformatec/devise.git' 

kết quả tương tự.

tùy chỉnh của tôi after_sign_in_path_for

def after_sign_in_path_for(resource) 
    str = stored_location_for(resource) || stored_location || root_path 
    debugger 
    str 
end 

def stored_location 
    session.delete(:return_to) 
end 

def store_location 
    session[:return_to] = request.fullpath 
end 

là được gọi, nó mang lại cho url thích hợp, mang lại cho str chính xác như tôi mong đợi nó để cung cấp cho. Trình gỡ lỗi dừng tại thời điểm này ...

Nhưng sau cont trang vẫn ở sign_in, tuy nhiên việc đăng nhập diễn ra.

Tôi tin rằng đó không phải là vấn đề về mã của tôi. Nó có thể là một vấn đề Devise. Bất cứ ai, ai có nó làm việc, chia sẻ với tôi phiên bản chính xác của Devise, mà làm việc với bạn.

+1

Bạn có thể xác nhận rằng thông tin đăng nhập hợp lệ không? 'respond_with' sẽ kiểm tra mục tài nguyên để tìm lỗi trước khi chuyển sang vị trí được cung cấp, và nó sẽ thực hiện việc này sau khi giải quyết đường dẫn tùy chỉnh của bạn – PinnyM

Trả lời

2

Khó nói mà không thấy nhật ký máy chủ của bạn. Nếu after_sign_in_path_for đang được kêu gọi và tạo ra các URL mong đợi, sau đó lá một khả năng:

# app/controllers/devise/sessions_controller.rb 
# POST /resource/sign_in 
def create 
    resource = warden.authenticate!(auth_options) 
    set_flash_message(:notice, :signed_in) if is_navigational_format? 
    sign_in(resource_name, resource) 
    respond_with resource, :location => after_sign_in_path_for(resource) 
end 

The respond_with method will act sensibly according to the status of the resource. Vì nó hiển thị lại mẫu new, nó chỉ ra một số lỗi xác thực hoặc sự cố đăng nhập khác.

Hãy xem nhật ký máy chủ. Đây là một lần đăng nhập thành công và chuyển hướng tiếp theo bằng cách sử dụng after_sign_in_path_for từ ứng dụng của tôi:

Started POST "/admins/sign_in" for 127.0.0.1 at 2012-10-18 09:59:27 -0700 
[INFO] [127.0.0.1] [2012-10-18 09:59:27 -0700] Processing by Devise::SessionsController#create as HTML 
[INFO] [127.0.0.1] [2012-10-18 09:59:27 -0700] Parameters: {"utf8"=>"✓", "authenticity_token"=>"DGjs2b3k8BIi62KWCn3u5kx7YxxyR03xkERcgH/ilr0=", "admin"=>{"email"=>"[email protected]", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"} 
[DEBUG] [127.0.0.1] [2012-10-18 09:59:27 -0700] Admin Load (2.1ms) SELECT "admins".* FROM "admins" WHERE "admins"."email" = '[email protected]' LIMIT 1 
[DEBUG] [127.0.0.1] [2012-10-18 09:59:27 -0700] (1.0ms) BEGIN 
[DEBUG] [127.0.0.1] [2012-10-18 09:59:27 -0700] (0.9ms) UPDATE "admins" SET "last_sign_in_at" = '2012-10-18 16:53:19.428068', "current_sign_in_at" = '2012-10-18 16:59:28.076180', "last_sign_in_ip" = '127.0.0.1', "sign_in_count" = 3, "updated_at" = '2012-10-18 16:59:28.078677' WHERE "admins"."id" = 1 
[DEBUG] [127.0.0.1] [2012-10-18 09:59:27 -0700] (9.3ms) COMMIT 
[INFO] [127.0.0.1] [2012-10-18 09:59:27 -0700] Redirected to http://localhost:3001/admin/users 
[INFO] [127.0.0.1] [2012-10-18 09:59:27 -0700] Completed 302 Found in 97ms (ActiveRecord: 0.0ms) 
[INFO] [127.0.0.1] [2012-10-18 09:59:28 -0700] 

Started GET "/admin/users" for 127.0.0.1 at 2012-10-18 09:59:28 -0700 
[INFO] [127.0.0.1] [2012-10-18 09:59:28 -0700] Processing by UsersController#index as HTML 
[DEBUG] [127.0.0.1] [2012-10-18 09:59:28 -0700] Admin Load (1.2ms) SELECT "admins".* FROM "admins" WHERE "admins"."id" = 1 LIMIT 1 
[DEBUG] [127.0.0.1] [2012-10-18 09:59:28 -0700] User Load (1.0ms) SELECT "users".* FROM "users" 
[INFO] [127.0.0.1] [2012-10-18 09:59:28 -0700] Rendered users/index.html.erb within layouts/application (1.0ms) 
[INFO] [127.0.0.1] [2012-10-18 09:59:28 -0700] Completed 200 OK in 22ms (Views: 16.5ms | ActiveRecord: 2.2ms) 

Bạn có thấy chuyển hướng đó không?

+0

Có. Bạn khá đúng. Có một điều xác nhận kỳ lạ. Người dùng không thể xác thực đúng, vì sự vướng víu của StateMachine. Tôi đã cố gắng kích hoạt một người dùng một sự kiện, điều đó không có sẵn từ trạng thái của anh ta. Bất cứ điều gì. Đó là một vấn đề xác thực sâu. Sau khi sửa các sự kiện statemachine, nó hoạt động. Cảm ơn! – Dahan

+0

Điều chắc chắn. Đừng quên chấp nhận để đóng vòng lặp. – jordanpg

+0

Yup, đối với tôi đó là lỗi xác thực mô hình người dùng, mặc dù được phép đăng nhập, không cho phép người dùng được cập nhật, do đó chuyển hướng đến sign_in ... – cavpollo

Các vấn đề liên quan