我想知道如何拒绝在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。
答案 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