我有一个使用 Devise、Rolify 和 Cancan 的应用程序。
现在,它唯一的设置是区分管理员和用户,以防止访问用户索引和站点的管理部分。
我的问题是没有用户可以访问其他用户配置文件,这不应该是这种情况。例如,如果我在 ....user/2 登录,我可以更改我的 url 并查看 user/1。我如何阻止这个?
能力.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
应用程序控制器
class ApplicationController < ActionController::Base
protect_from_forgery
rescue_from CanCan::AccessDenied do |exception|
redirect_to root_path, :alert => exception.message
end
角色.rb
class Role < ActiveRecord::Base
has_and_belongs_to_many :users, :join_table => :users_roles
belongs_to :resource, :polymorphic => true
end