我有一个我打电话的控制器
before_action :authenticate_user!
在开头。但是,我还有一个应该访问该控制器的模型admin,即
before_action :authenticate_admin!
我怎样才能让它可以访问控制器?
答案 0 :(得分:4)
Devise分别为user_signed_in?
模型和admin_signed_in?
模型提供辅助方法User
和Admin
。
您可以在ApplicationController
中编写自定义过滤器,并根据需要在具体控制器中应用过滤器。
class ApplicationController < ActionController::Base
...
class AuthorizationException < StandardError
end
rescue_from AuthorizationException do
render text: "Access Denied", status: :unauthorized
end
protected
def authenticate_user_or_admin!
unless user_signed_in? or admin_signed_in?
raise AuthorizationException.new
end
end
end
您现在可以在控制器中使用过滤器authenticate_user_or_admin!
。