Write the Code. Change the World.

11月 03

laravel-permission 用来控制接口的权限(更细致入微,易操作),sanctum 也是用来控制权限(路由),两者一起使用,会引起 guard 的错误。这个需要好好的处理一下。

常见报错如下:

The given role or permission should use guard `web` instead of `sanctum`.

laravel-permission 使用的 guard 是默认的,而 sanctum 使用的是 sanctum。 我们手动设置 guard 默认的 guard 为 sanctum,并在 User 模型中,指定为 sanctum 即可。

### 操作一波

config/auth.php 中增加 sanctum 的配置,并设置 default 的 guard 为 sanctum。其实,复制 web 的改个名就好。如:

<?php

return [
    'defaults' => [
        // 'guard' => 'web',
        'guard' => 'sanctum',
        'passwords' => 'users',
    ],
    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],
        // 新增
        'sanctum' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
    ],

然后在 user 模型中增加指定。

protected $guard_name = 'sanctum'

到此就 ok 了。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注