【发布时间】:2016-08-10 22:37:14
【问题描述】:
我查看了文档https://laravel.com/docs/5.2/authorization#controller-authorization 和一些在线教程,我确信我做的一切都是正确的。但是我无法让政策在 laravel 5.2 中工作 我创建了一个策略类
use App\User;
use App\Gallery;
use Illuminate\Auth\Access\HandlesAuthorization;
class GalleryPolicy
{
use HandlesAuthorization;
/**
* Create a new policy instance.
*
* @return void
*/
public function __construct()
{
//
}
public function saveTitle(User $user, Gallery $gallery)
{
return true;
// return $user->id === $gallery->user_id;
}
}
我是这样在 AuthServiceProvider 中注册的
protected $policies = [
'App\Model' => 'App\Policies\ModelPolicy',
'App\Gallery' => 'App\Policies\GalleryPolicy',
];
现在在我的控制器中我这样称呼它
$gallery = Gallery::where('hash', $request->gallery)->first();
$this->authorize('saveTitle', $gallery);
我得到这个输出: 哎呀,看起来像出事了。 Handler.php 第 107 行中的 1/1 HttpException:此操作未经授权。
【问题讨论】:
-
你也有公共函数boot(GateContract $gate) { $this->registerPolicies($gate);在你的 AUthServiceProvider 中? Laravel 实际上建议引用类 \App\Model::class (对于模型和策略)
-
它看起来好像在工作?什么不工作?
-
看来我没有登录,这就是它失败的原因。我傻了
标签: laravel laravel-5.2