0

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

devise

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

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

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

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

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 で確認済みです。


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí