2011-09-29 14 views
0

我的應用中有一些頁面需要通過鏈接進行身份驗證。如果用戶尚未通過身份驗證,則在使用篩選器前將用戶重定向到/auth/linked_in 。我希望認證後用戶應該被重定向到需要認證的頁面,而不是來自哪個用戶的頁面。OmniAuth:重定向到需要身份驗證的頁面,而不是用戶來自的頁面

之前過濾器的樣子:

def require_linked_in! 
    unless current_user and current_user.linked_in_authenticated? 
    redirect_to "/auth/#{Authentication::LINKED_IN}" 
    end 
end 

在我omniauth回調我做一些東西,像在記錄或提供的數據與用戶賬戶和關聯,如果一切正常,redirect_to request.env['omniauth.origin'] || root_url,但是這將用戶重定向回他從中點擊鏈接到需要linked_in認證的頁面,而不是目標頁面。

如何將用戶重定向到觸發身份驗證的頁面而不是用戶來自的頁面?

PS:用戶只能使用應用程序的註冊表單進行註冊,但以後可以在那裏連接鏈接和Facebook配置文件,也可以使用它們而不是普通的電子郵件/密碼登錄表單。如果它有任何區別。

回答

2

我想你需要在會​​話中存儲url並在omniauth回調後重定向。

def require_linked_in! 
    session[:return_to] = request.url 
    unless current_user and current_user.linked_in_authenticated? 
    redirect_to "/auth/#{Authentication::LINKED_IN}" 
    end 
end 

在你的回調動作,你可以使用:

redirect_to session[:return_to] || root_url 

希望它能幫助!

相關問題