有没有办法在门定义中定义控制器?

Is there any way to define controllers in gate definitions?

我正在建立一个新项目,我想使用 gates 和 policies。我知道如何通过 Laravel 文档使用它,但我想更进一步。

我们在 AuthServiceProvider 中有一个引导方法,我们应该在其中定义入口和策略。

我们可以像这样在门中定义控制器吗?

Gate::define(SomeController::class, function ($user) {
   if($user->something) {
     return false;
   }
   return true;
});

如果您想保护特定路由(防止未经授权的用户访问您的控制器),中间件 是您的最佳选择。 Gates/Policies 是为了保护 models/actions.

<?php

namespace App\Http\Middleware;

use Closure;

class MyCustomMiddleware
{
    public function handle($request, Closure $next)
    {
        if($request->user->something) {
            return false;
       }

       return true;
    }
}

有关如何创建和注册中间件的更多详细信息,请点击此处:

https://laravel.com/docs/5.8/middleware