Laravel 5.5权限-用户没有正确的角色 - php

我正在尝试在管理员用户没有分配角色的用例中找到解决方案。
在仪表板视图中,它不会为用户呈现url,而如果直接访问仪表板/用户,则会得到:

Spatie \ Permission \ Exceptions \ UnauthorizedException user does not have the right roles

app / Http / Kernel.php

    protected $routeMiddleware = [
     ....
    'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
    'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
];

路线/web.php

Route::group(
   ['middleware' => ['role:admin']],
    function () {
      Route::get('/dashboard/users', 'UsersController@index');
      Route::get('/dashboard/users/{id}', 'UsersController@edit');
      Route::patch('/dashboard/users/{id}', 'UsersController@update');
   }
);

查看/dashboard.blade.php

<div class="panel-body">
  @hasrole('admin')
     <li><a href="/dashboard/users">Manage Users</a></li>
  @endhasrole
</div>

我已经成功生成了默认角色和权限

命令/GenerateRoles.php

    public function handle()
    {
    $this->info('Generating default roles and permissions...');
    $admin = User::create(
      [
        'name'     => 'administrator',
        'email'    => '[email protected]',
        'password' => bcrypt('12345'),
      ]
    );

    // Create roles.
    $adminRole   = Role::create(['name' => 'admin']);
    $supportRole = Role::create(['name' => 'support']);

    $admin->assignRole('admin');

    // Create permissions.
    $userManagement = Permission::create(['name' => 'users management']);
    $deleteImages  = Permission::create(['name' => 'delete images']);
    $datasetStatus   = Permission::create(
      ['name' => 'change dataset building status']
    );

    $adminRole->givePermissionTo($userManagement);
    $deleteImages->syncRoles([$adminRole, $supportRole]);
    $datasetStatus->syncRoles([$adminRole, $supportRole]);
   }

它可能会出错吗?谢谢您的时间。

参考方案

您应该覆盖render方法进行重定向(或执行任何操作)。转到Expectations / Handler.php并覆盖渲染函数,如下所示:

public function render($request, Exception $exception)
{
    if ($exception instanceof \Spatie\Permission\Exceptions\UnauthorizedException) {
          return redirect('/');
    }

    return parent::render($request, $exception);
}

来源:https://github.com/spatie/laravel-permission#catching-role-and-permission-failures

检查对象是否已在集合中-Laravel - php

当我循环一系列不同的结果时,我希望将对象添加到新集合中。查询:$osRed = Item::where('category', 'Hardware') ->where(function ($query) { $query->where('operating_system', '…

Laravel打印日志 - php

我正在尝试在控制台上打印日志:我输入了:use Log; 然后在控制器中使用 Log::info('test log'); 但它不打印任何日志。 参考方案 我认为您需要在运行后检查storage/logs/laravel.logLog::info('test log'); 希望这对您有帮助

如何在Laravel中将变量从一个控制器传递到另一个控制器 - php

我有一个名为index.blade.php的视图,该视图显示了有关供应商的信息,该信息是通过控制器传递的。 VendorController,在此视图上,我有一个“查看地址”按钮,现在我想在单击按钮时显示此供应商的数据。我还有另一个控制器,即VendorAddressController,它从数据库中获取供应商的地址。 index.blade.php文件的代…

Laravel 5错误报告抑制 - php

在Laravel 4中,抑制E_NOTICE消息很容易;我似乎无法做到这一点,因为如果我添加error_reporting(E_ALL ^ E_NOTICE) 它只是被覆盖的任何地方。这似乎发生在这里:(index.php)$response = $kernel->handle( $request = Illuminate\Http\Request::…

Laravel 5发布资产 - php

我正在使用Laravel 5,我想将twitter bootstrap CSS和JS发布到公共目录。我确实使用Composer来获取twitter / bootstrap软件包,并且该部分运行正常,因此我想要的文件现在位于vendor / twitter / bootstrap / dist中。但是我无法使它工作。我得到“什么都没发布”。每次尝试时都会发送消…