我已在我的应用程序中设置了水银。它工作正常,但由于我还是铁杆新手,我无法设置身份验证。这是我跑完后试过的: rails生成水银:安装:身份验证
似乎我可以使用lib目录中的模块
module Mercury
module Authentication
def can_edit?
true if :authenticate_admin! //(from device)
end
end
end
我试图在视图中使用此方法,但它不起作用。 Lib目录应该自动加载,因为在配置文件中没有注释该行。
顺便说一下,只需在更新方法上添加一个before_filter ,我就会阻止普通用户确认编辑过的页面。但如果他们手动修改网址,他们仍然可以看到编辑本身。
有什么建议吗?
答案 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
相应地插入您的模块和身份验证方法,然后重新启动服务器