黃金俠

Ruby on Rails / Rubygems / Javascript / Git

omniauth 登入後的 redirect 設定

| Comments

我們曾在 Devise callbacks 中,描述如何在登入後自定 redirect。這次則是在 omniauth 進行 open id 驗證時就先把 redirect 當參數先丟。

參考 官方作法
利用 origin 參數即可在 open id 驗證後進行 redirect

config/routes.rb
1
match '/auth/facebook', :as => :facebook_login
app/views/xxx.erb
1
2
3
# view 或 controller 下
facebook_login_path(:origin => "/url/for/redirect")
# 即 "/auth/facebook?origin=/url/for/redirect"

devise 中已經透過 application_controller.rb 的 after_sign_in_path_for 處理登入後的 redirect 時,則可以透過 request.env['omniauth.origin'] 取得 origin 參數的內容。

app/controllers/application_controller.rb
1
2
3
def after_sign_in_path_for(user)
  return request.env['omniauth.origin'] || root_path
end

Comments