Deviseでログイン時にフレンドリーフォワーディングさせる

Pocket

あるページからログインを行ったら、元いたページに戻してあげる機能を実装する。
今回は「ページA→ログインするSNSを選択するページ(omniauth)→ログイン(外部サイト)→ページA」という流れなので
SNS選択ページに以下のロジック追加

SNS選択ページで前に見ていたページのURLを取得して
deviseのstore_location_forにセット。
「:user」ってなっている所はscopeなので、よきにはからう。

コールバック後に呼ばれるafter_sign_in_path_forの中で、
store_location_forで設定した値がないかをチェックするstored_location_forという処理があるので、設定済みの値があればそちらに飛ばしてくれるようになる。

フォワーディングを実装するにあたって、after_sign_in_path_forをapplicationControllerに書いて、
その中でsessionに持たせたリファラのURLを判別…という処理を書いてみようとして
Deviseのafter_sign_in_path_forのロジックを確認したら、stored_location_forを見つけたので、見てよかった〜。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です