使用CanCan進行授權和設計進行身份驗證。我有三個角色。管理員角色可以訪問所有操作。但是當我以管理員身份登錄時,我仍然遇到Access Denied。我究竟做錯了什麼??我也一直在關注this wiki for implementationCanCan :: AccessDenied位置控制器#顯示所有角色
這是我的控制器代碼
class LocationController < ApplicationController
#before_filter :authenticate, :only => [:title_clearing]
before_filter :authenticate_user!
load_and_authorize_resource
def show
@data = []
if params[:Date].match(/^(19|20)\d\d[- \/.](0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])$/).nil? == true
@message = "Wrong Date Format"
else
@data = Location.show(params[:Date])
if @data.size == 0
@message = "No data exists for "+ params[:Date]
else
@message = "Data loaded successfully for "+ params[:Date]
end
end
if params[:Date] == "all"
@message = "All records loaded"
@data = Location.show("all")
end
end
end
在ability.rb
if user.is? :admin
can :all, :location
end
if user.is? :titleclearing
can :title_clearing, :location
end
if user.is? :acquisitions
cannot :title_clearing, :location
end
在用戶模型
def role?(role)
roles.include? role.to_s
end
謝謝,工作;在某種方式。而之前它爲所有屬於所有角色的用戶顯示AccessDenied,現在每個人都可以通過!正如你從代碼中看到的,我希望role = titleclearing只能訪問title_clearing動作和role = acquisitions來獲取除title_clearing之外的所有動作。我該如何糾正這個問題? –
我首先要確定user.is?將角色作爲符號返回,並且無線連接無論如何返回true。是:title_clearing他們可以執行的自定義操作?你有沒有把它放在你的代碼中?像「可以嗎? :title_clearing,位置 –