0

我在我的应用程序中设置了水银。它工作正常,但由于我对 Rails 还是很陌生,所以无法设置身份验证。这是我在运行后尝试的: rails generate Merge:install:authentication

  • 看来我可以使用 lib 目录中的模块

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

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

顺便说一句,只需在更新方法上添加一个 before_filter,我就可以防止普通用户确认已编辑的页面。但是,如果他们手动修改不需要的 Url ,他们仍然可以看到编辑器本身。

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

有什么建议吗?

4

2 回答 2

5

我知道迟到的答案,但如果它对其他人有帮助。

lib/mercury/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

应用程序控制器.rb

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

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

于 2012-10-22T16:53:21.973 回答
2

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

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

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

于 2012-11-29T15:48:33.630 回答