Rails Mercury身份验证

时间:2012-06-30 15:52:29

标签: ruby-on-rails authorization administration helpers mercury-editor

我已在我的应用程序中设置了水银。它工作正常,但由于我还是铁杆新手,我无法设置身份验证。这是我跑完后试过的: rails生成水银:安装:身份验证

  • 似乎我可以使用lib目录中的模块

    module Mercury
      module Authentication
    
         def can_edit?
           true if :authenticate_admin!  //(from device)
         end
      end
    end
    

我试图在视图中使用此方法,但它不起作用。 Lib目录应该自动加载,因为在配置文件中没有注释该行。

顺便说一下,只需在更新方法上添加一个before_filter ,我就会阻止普通用户确认编辑过的页面。但如果他们手动修改网址,他们仍然可以看到编辑本身。

  • 我试图覆盖Mercury Controller,但它甚至不起作用

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

我知道的答案很晚,但是如果它对其他人有帮助的话。

LIB /汞/ authentication.rb

module Mercury
  module Authentication

    def can_edit?
      if user_signed_in? && current_user.admin?
        true
      else 
        redirect_to root_path
      end
   end

 end
end

applicationcontroller.rb

class ApplicationController < ActionController::Base
   protect_from_forgery
   include Mercury::Authentication
 ....

重新启动服务器,然后只有管理员可以查看和更新​​页面

答案 1 :(得分:2)

我遇到了同样的问题。对我有用的解决方案是明确地将任何模块处理包含在authentication.rb中,如下所示:

module Mercury
    module Authentication
        include YourAppName::YourAuthenticationModule
        def can_edit?
            admin_signed_in?
        end
    end
end

相应地插入您的模块和身份验证方法,然后重新启动服务器