2015-10-16 47 views
3

標題幾乎總結了我的問題。我有我的登錄控制器,我想在登錄後重定向到上一頁。例如,如果我正在查看「聯繫我們」頁面,然後登錄,我想將其重定向回「聯繫我們」頁面。只是想知道實現這一目標的最佳方式。登錄後重定向到上一頁? Mojolicious

+1

您嘗試過什麼嗎?你能告訴我們代碼嗎? – serenesat

+0

不,我沒有嘗試過任何東西,因爲我不確定從哪裏開始。我正在考慮從頭文件中獲取referer,然後在那裏做一個redirect_to,但我不確定這是做這件事的最好方法。 我真的不明白爲什麼你需要看到這個問題的任何代碼。 –

+0

檢查標題是一個好的開始。或者,您可以在每個頁面上設置的登錄表單中添加一些參數,然後將用戶發回該頁面。 – simbabque

回答

8

您可以檢查引薦來源。

$controller->redirect_to($controller->req->headers->referrer); 
+0

除非referer本身就是登錄頁面,否則如果您輸入錯誤的用戶名/密碼並重定向回登錄頁面,可能會出現這種情況。 – alexk

+0

另外,不要忘記檢查你是否指向你的網站而不是第三方 –

1

它可能不是上面那個漂亮的解決方案,但我使用了一個參數來傳遞'previous'頁面(back_url)的url。如果參數爲空,我可以設置一個默認頁面登陸。

my $self = shift; 
my $back_url = $self->param('back_url'); 
$back_url = '/publications' if $back_url eq $self->req->url->to_abs or $back_url eq ''; 
# code here 
$self->redirect_to($back_url);