5

Devise は が提供する URL にリダイレクトしませんafter_sign_in_path_for。代わりに、実際に私のカスタムを呼び出しますafter_sign_in_path_for。計算すると予想されるURLを計算しますが、リダイレクトは行われません。ページに残りsign_inますが、実際のサインインは行われません。

私はdeviseのいくつかのバージョンを試してきました:

gem 'devise'

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

同じ結果です。

私の習慣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

が呼び出され、適切な URL が返され、str期待どおりに正確に返されます。デバッガーはこの時点で停止します...

ただしcont、ページが に留まった後sign_in、サインインは行われます。

それは私のコードの問題ではないと思います。それはDeviseの問題かもしれません。動作している誰かが、あなたと動作するDeviseの正確なバージョンを私と共有できますか.

4

1 に答える 1

2

サーバーログを見ずに言うのは難しい. after_sign_in_path_forが呼び出され、期待される URL を生成している場合、1 つの可能性が残ります。

# 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

このrespond_withメソッドは、リソースのステータスに応じて適切に動作します。テンプレートを再度レンダリングしているnewため、何らかの検証エラーまたはサインインに関するその他の問題を示しています。

サーバーログを見てください。これは、成功したサインインとafter_sign_in_path_for、アプリからを使用したその後のリダイレクトです。

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"=>"me@mydomain.com", "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" = 'me@mydomain.com' 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)

そのリダイレクトを見ていますか?

于 2012-10-18T17:12:01.513 に答える