2013-02-11 69 views
0

如何定義Devise after_sign_in_path以重定向到頁面用戶,然後單擊登錄?我已經在application_controller中嘗試了這一點:使用自定義會話控制器設計after_sign_in_path

13 def after_sign_in_path_for(resource_or_scope) 
14  sign_in_url = url_for(:action => 'new', :controller => 'my_sessions', :only_path => false, :protocol => 'http') 
15  if request.referer == sign_in_url 
16  super 
17  else 
18  stored_location_for(resource_or_scope) || request.referer || root_path 
19  end 
20 end 

通過這個,我只得到重定向到root_path。值得一提的是,我有Sessions callse MySessionsController的自定義控制器。我究竟做錯了什麼?

+0

你能說出'if'語句正在執行哪個分支嗎? – rossta 2013-02-11 14:04:55

回答

2

您不需要觸摸after_sign_in_path_for(resource_or_scope),因爲這是默認行爲。

的返回路徑存儲在session["user_return_to"](如果用戶是你的色器件的範圍),以及由store_location! in FailureApp

設置此故障應用程序被稱爲每次監獄長驗證失敗:看warden config調用Delegator

有沒有可能你繞過這些?

這種情況下,如果你warden-驗證沒有爆炸。通過故障應用程序監獄長僅保釋金,如果你打電話warden.authenticate!,看到warden wiki這確實發生if you call devise's authenticate_user!

請確保您在使用的情況下在你的會話控制器like hereafter_sign_in_path_for爲導向位置,你有一個自定義的。

+0

是否可以因爲我的自定義my_sessions控制器而繞過它? – oFca 2013-02-15 00:22:09

+0

我更新了我的回答 – 2013-02-15 08:25:56

+1

你有沒有成功? – 2013-02-18 12:51:46

相關問題