您不需要单独的控制器,您可以单独阻止视图/操作。一种常见的方法是在某些操作之前运行过滤器。这样您就可以将身份验证和控制器逻辑分开。
如果您想要一种/backend
仅对您自己可用的简单方法,我建议您按照Rails 文档中给出的基本 http auth示例进行操作。您定义哪些操作需要密码的行是:
http_basic_authenticate_with name: "dhh", password: "secret", except: :index
它说要阻止除 index
. 您可以使用
http_basic_authenticate_with name: "dhh", password: "secret", only: :edit
我不推荐使用后者,因为这样很容易忘记阻止一个动作。
如果您user
的 Rails 应用程序中有一个模型来存储用户是否是管理员,那么它的工作方式非常相似。让我们假设您的模型回答user.admin?
. 然后您的设置将类似于:
# app/controllers/categories_controller.rb
class CategoryController < ApplicationController
before_filter :require_admin, except: [:index]
# …
end
# app/helpers/sessions_helper.rb
module SessionsHelper
def require_admin
redirect_to(root_url) unless current_user && current_user.admin?
end
end
railstutorial.org上很好地介绍了设置会话助手、控制器等