2014-10-20 40 views
0

當我嘗試將用戶重定向到請求的路徑,他在登錄後,我得到這個錯誤此網頁有重定向循環 - 設計,Rails的

讓當他點擊「我的帳戶設置一個鏈接的說。 「這是安全的,他被重定向到登錄頁面進行身份驗證,然後返回到」我的帳戶設置「頁面,如果身份驗證成功。

通過它創建了一個循環的錯誤,這是由於我的理解一個事實,即他被重定向形式登錄到比需要再次登錄頁面(因爲他已經athenticated)的網頁...

現在,我試圖做來解決這個問題如下:

ApplicationController

before_action :store_location 

def store_location 
    # store last url - this is needed for post-login redirect to whatever the user last visited. 
    return unless request.get? 
    if (request.path != "https://stackoverflow.com/users/sign_in" && 
     request.path != "https://stackoverflow.com/users/sign_up" && 
     request.path != "https://stackoverflow.com/users/password/new" && 
     request.path != "https://stackoverflow.com/users/password/edit" && 
     request.path != "https://stackoverflow.com/users/confirmation" && 
     request.path != "https://stackoverflow.com/users/sign_out" && 
     !request.xhr?) # don't store ajax calls 
    session[:previous_url] = request.fullpath 
    end 
end 


def after_sign_in_path_for(resource) 
    session.delete(:previous_url) || root_path 
end 

def logged_in? 
    current_user ? true : false 
end 

PagesController

before_action :authenticate_user!, only: [:show], :unless => :logged_in? 

這樣,認證成功後,我們跳過:authenticate_user!直接去渲染顯示視圖(而不是進入登錄/重定向邏輯...)

不幸的是,它沒有解決問題。

你看到我在這裏失蹤的東西嗎?

回答

0

嘗試增加

session["user_return_to"] = request.fullpath 

您store_location方法後 「!request.xhr?)」

更換

session[:previous_url] = request.fullpath 
+0

但是,這意味着它會去root_path,對 ?我想去「我的帳戶設置」頁面,這不是root_path ... – user3442206 2014-10-20 19:46:49

+0

我編輯了我的意思 - 我的意思是替換,因爲你在那裏。我的建議是頂部代碼片段取代你的底部 – nil 2014-10-20 19:49:47

+0

同樣的問題!很明顯,我必須通過用'session [「user_return_to」]替換返回行來添加'after_sign_in_path_for'。 root_path' – user3442206 2014-10-20 20:01:31

相關問題