0

我有一個使用Devise,Rolify和Cancan的應用程序。Cancan的用戶配置文件授權

現在它是唯一一個區分管理員和用戶以防止訪問用戶索引和網站管理員部分的設置。

我的問題是,沒有用戶可以訪問其他用戶配置文件,這不應該是這種情況。例如,如果我登錄....用戶/ 2我可以只更改我的網址,並看到用戶/ 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

您將有到c根據CanCan文檔,這可以通過把它放在你的控制器的頂部來完成:load_and_authorize_resource

這應該限制用戶在其他配置文件中偷看,因爲它看起來像你已經定義了你的能夠將觀看限制爲只有一個人的個人資料。

參考康康舞維基的更多信息: https://github.com/ryanb/cancan/wiki

祝你好運!