我正在使用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);
}
}
答案 0 :(得分:0)
您的身份验证设置未配置为使用用户模型eloquent
,但已将其设置为使用database
驱动程序。
调整身份验证保护以使用使用eloquent
驱动程序并使用所需模型的用户提供程序。
默认情况下,此设置可根据需要正确设置,并使用App\User
模型,因此您已进行了更改。
如果您编辑了config/auth.php
文件,并且未应用所做的更改,则可能已缓存了配置(开发时不需要)。要清除此问题,您可以运行php artisan config:clear
。