[英]Rails Devise: How to redirect user after signing in
如果我訪問http://example.com ,則首先進入登錄頁面,然后成功登錄后進入首頁。 如果成功登錄后訪問http://example.com/myusers ,我希望重定向到myusers頁面而不是首頁。
閱讀一些在線帖子后,我了解到在我的application_controller.rb中,我可以操縱after_sign_in_path_for方法。 我通過向此方法添加特定的URL進行了測試,成功登錄后,我總是會重定向到該URL。
def after_sign_in_path_for(resource)
"http://example.com/users"
end
如何使該方法捕獲用戶登錄之前請求的URL並相應地重定向用戶?
Devise帶有類似這樣的現成的東西。 作為故障場景的一部分,它存儲了最后一個請求。 此“操作方法”應為您提供解決方案。 請注意,您需要在控制器的before_filter中調用此方法:
before_filter: authenticate_user!
https://github.com/plataformatec/devise/wiki/操作方法:-重新登錄-返回到當前頁面-登錄后,注銷,注冊,更新#a-更簡單的解決方案
您可以將請求的URL存儲在會話變量中。
session[:return_to] = request.original_url
您可以在應用程序控制器中的before_action :authorize
方法內設置會話變量,這取決於您的授權策略在其他地方可能有意義。
def authorize
if current_user_authorized?
# Authorized...
else
# Record the requested page URL and redirect to the login page.
session[:return_to] = request.original_url
redirect_to login_url, error: "Not authorized."
end
end
要使用它,您可以編寫:
def after_sign_in_path_for(resource)
session[:return_to] || root_url
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.