簡體   English   中英

登錄后將用戶返回到上一頁(Rails)

[英]Return user to previous page after login (Rails)

在 rails 2.3.8 站點上,我在每個頁面上都有登錄鏈接(將用戶帶到單獨的登錄頁面)。 成功登錄后,用戶當前被重定向到 root。 相反,我想重定向到他們之前查看的頁面。

我試過使用 request.referer:

redirect_back_or_default(request.referer)

其中redirect_back_or_default:

def redirect_back_or_default(default)
    redirect_to(session[:return_to] || default)
    session[:return_to] = nil
end

但是,即使登錄成功,也會產生“訪問被拒絕”錯誤。

我不會嘗試重定向到引用者,而是設置 session[:return_to]

您需要一個 before 過濾器,在您對所有操作進行身份驗證之前運行:

def store_return_to
  session[:return_to] = request.url
end

然后將您的重定向更改為

redirect_back_or_default()

首先,您必須通過cookies存儲您的url

cookies[:return_to_url] = request.url

然后成功登錄后:

redirect_to cookies[:return_to_url] || root_path
cookies[:return_to_url] = nil

# or even better code in one line:
redirect_to cookies[:return_to_url].delete || root_path

https://api.rubyonrails.org/classes/ActionDispatch/Cookies.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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