【问题标题】:Require authorization active_admin/devise in controller :only index show edit destroy需要在控制器中授权 active_admin/devise :仅索引显示编辑销毁
【发布时间】:2013-01-07 19:48:46
【问题描述】:

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

【问题讨论】:

  • 听起来可能是路由问题,您的购买模型的路由是什么样的?
  • @kevinb - 我已经尝试了几种使用 before_filter 的方法并尝试定义授权,但我越来越迷失了。所以相反,我想我是在问我如何在我的控制器中包含一个 before_filter 以便需要 Activeadmin:仅用于那些需要的。除了创建订单之外,这就是一切。
  • 这就是我所做的。我添加了 before_filter :authenticate_user! before_filter 做 redirect_to :new_user_session_path 除非 current_user && current_user.admin?它会发送他们登录。但不是 activeadmin 登录,而是不同的登录。它将转到 /users/sign_in 而不是 /admin/login

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


【解决方案1】:

您可以执行以下操作,它会让您选择重定向到您认为合适的任何路径。

在文件中

config/initializers/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

在您的购买控制器中添加以下 before_filter 行:

before_filter :authenticate_active_admin_user!

希望这会有所帮助! ~凯文

【讨论】:

  • 没有错误@kevin,但它并没有要求将我重定向到登录。它仍然显示数据
  • 您是否在购买控制器中添加了以下行? before_filter :authenticate_active_admin_user!在您要“锁定”的任何控制器中添加该行
  • 好的,我这样做了,它正在做它以前对我所做的事情。将我重定向到 /users/sign_in 而不是 /admin/login 页面
  • 但我确实忘记将该行放在购买控制器中。你知道骑这个有什么好处吗?
  • 这是正确的答案。我必须设置一些其他用户表和配置而不是使用活动管理员吗?我生成了这个应用程序,包含用户模型和打包的所有内容。所以也许如果我找出它是什么并删除它,你认为这会解决它吗?
【解决方案2】:

authenticate_active_admin_user 使您可以访问管理员身份验证用户,无论您在管理员中调用什么,这都会引导您获得授权。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    相关资源
    最近更新 更多