在rails上的ruby中拒绝访问命名空间功能

时间:2015-01-27 06:49:46

标签: ruby-on-rails

我想知道如何拒绝在rails上访问命名空间。 例如,我有一个用户模型,没有管理员和用户。我有localhost:3000路径,所有用户都可以访问,localhost:3000 / admin,只有管理员才能访问它们。在第一条路线中,每个人都可以登录,但是当转到路径/管理员时,只有管理员才能访问。 我有用户模型,角色。 我的routes.rb

namespace :admin do
    resources :whatever
  end

ability.rb

if user.role.name == 'admin'
          can :access, :rails_admin
          can :manage, :all
else
    can :read, :all
end

我的管理员控制器在一个文件夹中,这是其他上下文。 我可以拒绝非管理员用户访问/ admin吗? 我正在使用mongoid。

1 个答案:

答案 0 :(得分:1)

我认为在控制器中这样做更常见。

在我的情况下,我在AdminBaseController中使用before_action,所有管理员相关的控制器都继承自,以验证用户是否以管理员身份登录。

class AdminBaseController < ApplicationController
  before_action :authenticate_admin_user!

  def authenticate_admin_user!
    # authentication related logic goes here
    redirect_to root_url unless current_user.try(:admin?)
  end
end