不适用于我的UsersUpdate的laravel策略

时间:2017-08-02 18:39:29

标签: php laravel

我有

(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。

这里有什么问题?思考和思考,看,我在这里看不到任何坏事。

2 个答案:

答案 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;
 }