Laravel 5.1指数&创建授权

时间:2015-11-16 22:10:56

标签: laravel laravel-5 laravel-5.1

我正在使用Laravel 5.1的授权功能,记录为here。我的控制器实现了AuthorizesRequests,我设置了我的策略,将策略连接到他们的模型,以创建各种ACL。在我的控制器中,我正在检查每种方法的授权。例如,在'AgencyController'中,'update'方法调用$ this-> authorize($ agency),然后检查我的AgencyPolicy的更新方法,以便知道当前用户是否被允许更新代理,正如所描述的那样在文档中。这按照我想要的方式工作。

但是,我似乎无法弄清楚如何在没有使用特定模型的情况下对其他方法(如index()和create())使用授权。调用$ this-> authorize('index')似乎返回false,即使我的策略类中只有一个索引($ user)函数只返回true。

我是新手使用Laravel的授权助手,所以我可能会犯这个错误或遗漏一些明显的东西。任何帮助我指向正确方向的帮助都会非常感激!

2 个答案:

答案 0 :(得分:5)

你必须传递你正在检查的模型的类名:

$this->authorize('index', Agency::class);

答案 1 :(得分:0)

在Laravel懈怠小组的帮助下,我能够自己找到答案。

如果没有模型实例,则authorize()调用无法映射到正确的策略。但是通过简单地将课程传递给他们,它就能够并且有效。

例如,我不是在我的控制器的索引方法中调用$ this-> authorize('index'),而是现在调用$ this-> authorize('index',Agency :: class)来给它正确使用的模型。