2016-09-28 65 views
0

因此,我需要帮助了解如何创建策略以进行授权。我很了解盖茨,他们为我工作,但是当我创建一项政策时,这是行不通的。使用策略的Laravel授权

这是我正在使用的代码。我认为我的问题是试图找出你在哪里放置给定模型函数的授权检查?

public function update(User $user, Message $message) 
{ 
    return true; 
} 

在这里,我只是将测试切换为真或假,只是为了看看事情是如何工作的。但是当我在消息控制器中执行此操作时:

if ($user->can('update', $message)) { 
    return 'You can update this post'; 
} 

它不起作用。我还碰到另一种方法来检查控制器中的授权,使用$ this-> authorize('update',$ message);但是那也行不通。

谢谢。

+0

你在你的'AuthServiceProvider'中注册了你的Policy类吗? – Doom5

+0

@ Domm5是的,我做了'App \ Message'=>'App \ Policies \ MessagePolicy', – Kaley36

回答

1

所以我让系统在运行之后运行。我改变了很多东西,陷入了很多地方,我不知道我做了什么。但似乎最大的不同在于改变了我注册政策的方式。在AuthServiceProvider中的policies数组中,显然是格式化过程中写入的一个示例。尽管文档最后显示了以类的格式注册模型和策略,但我使用了String格式。我想这是我的问题。同时,我不得不将消息的实际实例传递给authorize方法,而不是使用Message :: class方法。