授权视图用户不使用Cancancan访问Rails4应用程序中的某些页面



我使用Devise进行身份验证,使用cancancan进行授权。现在我想不允许某些页面的视图用户。所以我添加了以下代码。但它为 # 错误抛出未定义的局部变量或方法"current_user"。

我的能力.rb

class Ability
  include CanCan::Ability
  def initialize(dashboard_user)
       current_dashboard_user ||= DashboardUser.new 
       if current_dashboard_user.CD_DASHBOARD_ADMIN?
         can :manage, :all
       else
         can :read, :summary
         can :read, :home
       end
      .........
  end

Application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  before_action :configure_permitted_parameters, if: :devise_controller?
  before_action :authenticate_dashboard_user!
  protected
   rescue_from CanCan::AccessDenied do |exception|
    redirect_to main_app.root_url, :alert => exception.message
  end
  ....
end

dashboard_user_controller.rb

class DashboardUsersController < ApplicationController
  before_action :set_dashboard_user, only: [:show, :edit, :update, :destroy]
  load_and_authorize_resource
  ....
end

Okey,现在就做这个技巧。以某种方式调用了current_user帮助程序方法。因此,最快的解决方案是如果您可以执行以下操作。

在您的application_controller.rb文件中放置此块:

   def current_user
    current_dashboard_user
   end
  # method_alias :current_user=, current_user # you may need this line if required.
   helper_method: :current_user

我希望这会有所帮助。

最新更新