我有
(1/1) HttpException
This action is unauthorized.
我认为所有人都应该工作正常,我做得对,但也许没有。
我的控制器方法:
public function update(Request $request, Users $uzytkownik)
{
$this->authorize('update', $uzytkownik);
return 1;
}
App\Policies\
中的UsersPolicy:
<?php
namespace App\Policies;
use App\Models\Users;
use Illuminate\Auth\Access\HandlesAuthorization;
class UsersPolicy
{
use HandlesAuthorization;
public function update(Users $user)
{
return true;
// return $user->login === auth()->login;
}
}
在AuthServiceProvider中:
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
'App\Models\Users' => 'App\Policies\UsersPolicy',
];
我的用户模型位于App\Models\
当我从控制器中剪切$this->authorize('update', $uzytkownik);
这一行时,一切正常,我看到&#39; 1&#39;,当我再次添加HttpException。
这里有什么问题?思考和思考,看,我在这里看不到任何坏事。
答案 0 :(得分:1)
请确保您的路线在这样的auth middlware下:
Route::group(['middleware' => 'auth'], function () {
// ur update route here
});
或在你的控制器构造函数中:
public function __construct()
{
$this->middleware('auth');
}
并且像@Laerte一样说你的更新策略方法应该有另一个类型为user的参数,你想要编辑的用户是这样的:
public function update(Users $userLoggedIn, Users $uzytkownik)
{
return true;
}
答案 1 :(得分:0)
在您的策略中,您必须添加两个参数:第一个是用户登录,第二个是实际参数。请在政策中尝试此操作:
public function update(Users $userLoggedIn, $user)
{
return true;
}