我有一个使用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
答案 0 :(得分:0)
您必须检查控制器中的功能,并且根据CanCan文档,这可以通过将其放在控制器的顶部来完成:load_and_authorize_resource
这会限制用户窥视其他个人资料,因为您似乎已经定义了将查看限制为只有一个人资料的能力。
有关更多信息,请参阅CanCan wiki: https://github.com/ryanb/cancan/wiki
祝你好运!