16
13

More than 5 years have passed since last update.

devise で cookie からログインしたかどうかを判定する

Posted at

devise

Rails で認証の仕組みを実装する時に利用する devise、便利ですよね。

細かいことですが、掲題の件をどのように実装するか確認したので、自分用のメモ。

Devise::Strategies::Rememberableauthenticate! メソッドで cookie の内容を確認して認証しているので、その中で session にフラグを立てる実装にしました。

用途としては、ユーザー情報変更等の処理の前に、このフラグが立っていたら、パスワードを再入力してもらう、ということが考えられます。

lib/rememberable_decorator.rb
require "devise/strategies/rememberable"
class Devise::Strategies::Rememberable < Devise::Strategies::Authenticatable
  def authenticate!                                                             
    resource = mapping.to.serialize_from_cookie(*remember_cookie)

    unless resource
      cookies.delete(remember_key)
      return pass
    end

    if validate(resource)
      session[:login_via_cookie] = true
      success!(resource)
    end
  end
end                                          
Warden::Strategies.add :rememberable, Devise::Strategies::Rememberable

このファイルを initilaizer 辺りで require してオーバーライドすればOK。

devise 3.2.4 で確認済みです。

16
13
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
16
13