案例:我正在使用Laravel的Authorization作爲使用策略的骨幹構建論壇。我運行的支票的例子有:@can('view', $forum)
,@can('reply', $topic)
,Gate::allows('create_topic', $forum)
等。這些檢查基本上檢查用戶角色是否具有特定論壇,主題或帖子的權限。這樣我可以爲我的應用程序中的每個論壇賦予角色非常特定的權限。訪客用戶的授權和策略
的問題是,所有這些檢查的經過大門類,具體的方法稱爲raw()
這在其第一行做到這一點:
if (! $user = $this->resolveUser()) {
return false;
}
這與論壇的問題時提出的問題。如果用戶沒有登錄,Laravels Gate類會自動返回false。
我需要能夠觸發我的策略即使沒有用戶。說我的[email protected]
方法,我做if(User::guest() && $forum->hasGuestViewAccess()) { return true }
但正如你所看到的,這種方法永遠不會觸發。
有沒有辦法讓我仍然使用Laravel的授權功能與來賓用戶?
你也可以通過使用'Gate :: forUser($ guestUser)'解決解決問題的方法,但這對你的情況來說似乎沒有用處,因爲你仍然需要爲來賓和用戶使用不同的代碼。 – tdhsmith