簡體   English   中英

Rails Devise:登錄后如何重定向用戶

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM