用cancan进行用户配置文件授权

时间:2012-06-14 04:19:15

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 authorization

我有一个使用Devise,Rolify和Cancan的应用程序。

现在它唯一的设置是区分管理员和用户,以防止访问用户索引和网站的管理部分。

我的问题是,没有用户可以访问其他用户配置文件,这应该不是这种情况。例如,如果我登录.... user / 2我可以更改我的URL并查看user / 1。我如何阻止这个?

Ability.rb

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
    if user.has_role? :admin
      can :manage, :all
      can :access, :rails_admin
      can :dashboard 
    else
      can :manage, Profile, :user_id => user.id
    end
 end
end

Application_controller

class ApplicationController < ActionController::Base
  protect_from_forgery

  rescue_from CanCan::AccessDenied do |exception|
    redirect_to root_path, :alert => exception.message
  end

role.rb

class Role < ActiveRecord::Base
  has_and_belongs_to_many :users, :join_table => :users_roles
  belongs_to :resource, :polymorphic => true
end

1 个答案:

答案 0 :(得分:0)

您必须检查控制器中的功能,并且根据CanCan文档,这可以通过将其放在控制器的顶部来完成:load_and_authorize_resource

这会限制用户窥视其他个人资料,因为您似乎已经定义了将查看限制为只有一个人资料的能力。

有关更多信息,请参阅CanCan wiki: https://github.com/ryanb/cancan/wiki

祝你好运!