我即将创建一个管理页面(/ admin),并试图找出解决此问题的最佳方法。我发现的所有解决方案似乎都太复杂了(管理页面只有一个目的就是编辑其中一个资源)。只有一个动作的控制器似乎是最简单的解决方案,在执行此操作之前是否还应考虑其他任何选项?
答案 0 :(得分:3)
有几件事需要考虑。
/admin
而不是/<resource>
或/admin/resource
或/admin/<resource>/:id
?如果需要,您可以使用嵌套路由创建管理命名空间。您甚至可以在路由中命名:admin
命名空间,并将admin命名空间中的根设置为特定控制器,而不是创建专用控制器。如果还没有,可以阅读Rails路由指南(http://guides.rubyonrails.org/routing.html)。
答案 1 :(得分:0)
您可以使用HTTP基本身份验证,并使用带before_action
选项的only
仅针对您要密码保护的操作触发它。
class ResourceController < ApplicationController
before_action :authenticate, only: [:admin_edit]
def admin_edit
# your action code here
end
def authenticate
authenticate_or_request_with_http_basic do |username, password|
username == "admin" && password == "admin@123"
end
end
end