我正在使用Laravel 5.1.26,包括帶有策略的授權。我有一個基本的ACL模型,其中用戶有一個角色,當然是一個整數角色字段。授權不起作用用戶搜索
我的角色是: 0 - 管理員(可以對用戶執行任何操作); 1-運營商(不能對用戶進行任何操作); 2-查看器(不能對用戶執行任何操作)。
我提供執行用戶搜索的選項。只有管理員可以執行此操作,因爲我的角色定義。所以,我有一個方法,在UserController中顯示我的結果:
public function postSearch(Request $request)
{
$this->authorize('search', User::class);
$query = User::select('name', 'email')
->where('name', 'LIKE', "%$request->name%")
->where('email', 'LIKE', "%$request->email%")
->where('role', '=', "%$request->role%");
return $this->displayResult($query, $request);
}
正如你看到的,在authorize方法進行驗證,以及代碼的其餘部分產生的結果。簡單。
問題是因爲如果我搜索(使用Administrator用戶的所有情況)操作員用戶,那麼我所有的操作將被禁用:創建,刪除,編輯等相同的行爲,如果我搜索瀏覽器用戶。
但是,如果我搜索管理員用戶,那麼我的所有操作都已啓用!
所以,我猜測的授權方法是接收用戶發現!不是用戶認證。我該如何解決這個問題?我傳遞User :: class是因爲如果我沒有通過任何傳遞,那麼我的策略不起作用(因此,我在這裏最後的註釋https://laracasts.com/discuss/channels/laravel/laravel-511s-new-authorization-doesnt-read-policies/?page=2)。
謝謝。