php - Laravel,添加门以查看用户是否有权访问

标签 php laravel

我有一个包含我的权限的表,我希望能够设置如下所示的路由,以便检查登录用户的权限,并查看他们是否有权访问 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/

相关文章:

php - Laravel 面包屑不选择 View

PHP OOP Mysql 查询

php - 在更新表单 php 上显示图像路径

php - cakephp 查找关联字段的顺序排序

php - 是否可以在 Laravel 中将数组存储为闪存数据?

laravel - Deployer v4.2.1 fatal error "undefined function"带有开箱即用的官方认可的第 3 方配方

php - 将 Doctrine DBAL 添加到自己的 php 项目中

php - 根据 WooCommerce 中的特定订单备注完成订单

php - laravel eloquent 中深度嵌套关系中的 withSum

php - 如何在 laravel 5 Controller 中独立设置 cookie