2016-09-28 109 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方法。