需要在控制器中授权active_admin / devise:只有index show edit destroy

时间:2013-01-07 19:48:46

标签: ruby-on-rails ruby-on-rails-3 devise activeadmin

我正在尝试在我的控制器中要求授权purcahses_controller.rb它只是一个带有Show Edit Destroy的订单表单模型..我可以在active_admin中查看它,url是localhost / admin / purchases。但问题是我也可以在localhost / purchase上查看它。它列出了所有订单并允许所有功能。如果用户未登录,我喜欢使用简单的未经授权的消息route_to rooturl。

2 个答案:

答案 0 :(得分:3)

您可以执行以下操作,它将为您提供重定向到您认为合适的任何路径的选项。

在文件

  

配置/初始化/ active_admin.rb

进行以下更改

config.authentication_method = :authenticate_active_admin_user!

然后在应用程序控制器中添加如下内容:

class ApplicationController < ActionController::Base
  protect_from_forgery

  def authenticate_active_admin_user!
    authenticate_user!
    unless current_user.superadmin?
      flash[:alert] = "Unauthorized Access!"
      redirect_to "/admin/login"
    end
  end
end

在您的purchases_controller中添加以下before_filter行:

before_filter :authenticate_active_admin_user!

希望这有帮助! 凯文〜

答案 1 :(得分:0)

authenticate_active_admin_user使您可以访问admin身份验证用户,这将导致您获得授权,无论您以admin身份进行什么调用。

controller do 
  skip_before_action :authenticate_active_admin_user, only: :action
end

https://www.rubydoc.info/gems/nsm-activeadmin/0.2.2/ActiveAdmin%2FResourceController%3Aauthenticate_active_admin_user

https://github.com/activeadmin/activeadmin/blob/master/lib/active_admin/base_controller.rb#L38