PermissionMiddleware中的“调用未定义的方法Illuminate \ Auth \ GenericUser :: can()”

时间:2019-12-11 06:07:31

标签: laravel

我正在使用Laravel 5.8,但出现此错误:

  

在PermissionMiddleware中调用未定义的方法Illuminate \ Auth \ GenericUser :: can()

如何解决此问题?

use Closure;
use Spatie\Permission\Exceptions\UnauthorizedException;

class PermissionMiddleware
{
    public function handle($request, Closure $next, $permission)
    {
        if (app('auth')->guest()) {
            throw UnauthorizedException::notLoggedIn();
        }

        $permissions = is_array($permission)
            ? $permission
            : explode('|', $permission);

        foreach ($permissions as $permission) {
            if (app('auth')->user()->can($permission)) {
                return $next($request);
            }
        }

        throw UnauthorizedException::forPermissions($permissions);
    }
}

1 个答案:

答案 0 :(得分:0)

您的身份验证设置未配置为使用用户模型eloquent,但已将其设置为使用database驱动程序。

调整身份验证保护以使用使用eloquent驱动程序并使用所需模型的用户提供程序。

默认情况下,此设置可根据需要正确设置,并使用App\User模型,因此您已进行了更改。

如果您编辑了config/auth.php文件,并且未应用所做的更改,则可能已缓存了配置(开发时不需要)。要清除此问题,您可以运行php artisan config:clear