LoginSignup
6
8

More than 1 year has passed since last update.

Railsでログイン情報を永続化をする方法(クッキー・セッション方式)

Last updated at Posted at 2019-02-06

Railsでログイン情報がブラウザを閉じると消えてしまう問題に悩まされていましたので、解決方法を記録しておきます。

今まで、ログイン時の処理は、

if @user.save
  session[:user_id] = @user.id

と書いていました。これを

if @user.save
  cookies.permanent.signed[:user_id] = @user.id

とすることにより、ブラウザを閉じてもログイン情報が消え無くなりました。

クッキーの中身を参照する場合は、

cookies.signed[:user_id]

を使います。

簡単な解説

Railsのsessionではcookieのexpireがセットされないため、ブラウザを閉じるとそのcookieは無効になってしまいます。(sessionはそうしたい時に使うことが想定されている)

一方、Railsのcookiesではexpireを指定することができます。
cookies.permanentとすると、expireを20年にすることができます。
なお、ブラウザでcookieの値が必要になる場合を除いては、cookiesにsignedを使って暗号化を施すと良いです。(認証情報の場合は必須)
詳しくは公式ドキュメントをご覧ください。

終わりに

私は現在、Web3のサービスの開発をしています。詳しくはこちらの記事をご覧下さい。
無料でイーサリアムが当たる、Web3時代の寄付サイトを作った話

6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8