为了账号安全,请及时绑定邮箱和手机立即绑定

laravel,无法注册Policy类

laravel,无法注册Policy类

PHP
慕慕森 2019-03-06 21:50:11
我照着文档写的,看了半天不知道哪里出错了,求大佬帮忙给看一下:在AuthServiceProvider.php里的$policies属性里注册了ArticlesPolicy这个类。在Policies文件夹下面也用artisan控制台命令生成了一个ArticlesPolicy类:但是我在控制器里面使用Gate::allows()命令的时候,却出错了:大佬帮忙看看是哪里出错了,我自己看了半天没看出来。 这个是ArticlesPolicy策略类里定义的: public function update(User $user, Article $article) { return $user->id == $article->user_id; } 这个是控制器里使用Gate类的地方: public function edit($id) { $article = Article::findOrFail($id); if (Gate::allows('articles.update',$article)) { return view('articles.edit', compact('article')); }else{ return 'helloworld'; } } 在不加权限管理的时候,不管有没有权限,访问类似blog.test/articles/123/edit这样的地址的时候是没问题的。加了权限管理后,不管有没有权限,访问同样的地址就会出现上面的报错。
查看完整描述

2 回答

?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

但是我在控制器里面使用Gate::allows()命令的时候,却出错了:

请贴出这部分的代码


代码上来看未发现问题。

报错的关键信息:Class ArticlesPolicy does not exist ,说明未发现 ArticlesPolicy 这个类

1.更改 AuthServiceProvider 里 boot 这里的代码,改成这种写法

Gate::resource('articles', ArticlesPolicy::class);
根据题主反馈,这是正解。

2.上述步骤还是报错这个的话,并且在未发现代码问题的情况下,建议执行如下操作

php artisan clear-compiled 
php artisan optimize
查看完整回答
反对 回复 2019-03-18
?
湖上湖

TA贡献2003条经验 获得超2个赞

第一张截图,最后一条use引用的时候,你取的类的别名和下面继承类的名字一样?别名不要与你的类名重复.

查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 451 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信