5

認証されていないユーザーに許可されている root_path にユーザーをリダイレクトしようとして/いますが、のデフォルトの動作を変更できないようですactive admin

active adminが認証メカニズムとして使用されていることは知ってdeviseいますが、どちらのデフォルトも上書きできませんでしたdevise

私は自分で次のことを試しましたapplication_controller.rb(デフォルトであるはずですが):

# Overwriting the sign_out redirect path method
def after_sign_out_path_for(resource_or_scope)
  root_path
end

しかし、ログにはまだこれが表示されます。

Started GET "/admin/logout?locale=fr" for 127.0.0.1 at 2012-06-07 11:30:15 -0400
  Processing by ActiveAdmin::Devise::SessionsController#destroy as HTML
  Parameters: {"locale"=>"fr"}
  AdminUser Load (0.4ms)  SELECT `admin_users`.* FROM `admin_users` WHERE `admin_users`.`id` = 1 LIMIT 1
   (0.1ms)  BEGIN
   (0.3ms)  UPDATE `admin_users` SET `remember_created_at` = NULL, `updated_at` = '2012-06-07 15:30:15' WHERE `admin_users`.`id` = 1
   (0.5ms)  COMMIT
Redirected to http://localhost:3000/admin
Completed 302 Found in 47ms

そのため、ログインページに戻ります。

4

3 に答える 3

6

ログインも root_path にリダイレクトされるため、ファイベルの答えは少し間違っています。さらに良いことに、特定の Devise メソッドをオーバーライドできます。

ActiveAdmin::Devise::SessionsController.class_eval do
  def after_sign_out_path_for(resource_or_scope)
    "/wherever-you-want"
  end
end
于 2013-07-03T23:27:54.707 に答える
2

このためにモンキーパッチを作りました

module ActiveAdmin::Devise::Controller

      def root_path
        "/"  #add your logic
      end
end

これを初期化子に追加すると、ログアウト後にルートURLへのリダイレクトを強制する必要があります。

于 2012-09-24T12:12:31.453 に答える