【问题标题】:How can use policy function with middleware in Laravel?如何在 Laravel 中将策略功能与中间件一起使用?
【发布时间】:2021-05-20 01:22:20
【问题描述】:

我通过在策略中定义一个函数来使用中间件,如下所示:

在 UserPolicy.php 中:

    public function accessUser(User $user)
    {
        return $user->inRole('admin');
    }

    public function manageUser(User $user, User $secondUser)
    {
        return $user->inRole('admin') || $secondUser->id === $user->id;
    }

在 UserController.php 中:

public function __construct()
{
    $this->middleware('can:accessUser', ['except' => ['show']]);
}

public function index(Request $request)
{
    ...
}

public function show(Request $request, User $user)
{   
    $this->authorize('manageUser', $user);
    ...
}

我正在使用admin 帐户。它适用于show 函数,但不适用于index 函数。为什么??我该怎么办?还有其他地方我应该定义accessUser 函数吗?

【问题讨论】:

    标签: php laravel middleware policy


    【解决方案1】:

    另外,应该通过中间件将模型发送到策略..

     public function __construct()
     {
         $this->middleware('can:accessUser, App\Models\User', ['except' => ['show']]);
     }
    

    它运行良好:)

    【讨论】:

      猜你喜欢
      • 2021-06-16
      • 2020-12-16
      • 1970-01-01
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 1970-01-01
      • 2017-01-16
      相关资源
      最近更新 更多