我有一个包含我的权限的表,我希望能够设置如下所示的路由,以便检查登录用户的权限,并查看他们是否有权访问 edit_users 页面。
Route::group([ 'prefix' => 'users', 'middleware' => 'can:access,edit_users' ], static function() {
我添加了以下 Gate,我将在其中进行查询和检查,但是 $permission
为 null...
public function boot()
{
$this->registerPolicies();
Gate::define('access', static function ($user, $permission) {
dd($user, $permission);
});
}
我该如何去做呢?因为我不想将所有权限硬编码到门中!
最佳答案
默认中间件传递一个路由参数作为第二个参数。我认为在这种情况下您需要做的是编写自己的中间件,以字符串作为参数,然后手动进行检查。
namespace App\Http\Middleware;
use Closure;
class HasPermission {
public function handle($request, Closure $next, $permission)
{
if($request->user()->can('access', $permission)) {
return $next($request);
}
return redirect()->back();
}
}
然后在内核文件中注册您的新中间件
'hasPermission' => \App\Http\Middleware\HasPermission::class
然后您可以在路由中使用新的中间件而不是 can
中间件。
Route::group([ 'prefix' => 'users', 'middleware' => 'hasPermission:edit_users' ], function() {});
关于php - Laravel,添加门以查看用户是否有权访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56044356/