2016-02-04 80 views
0

用於在Laravel文檔的Authorization服務的部分指出了一些例子,如:Laravel 5授權服務中存儲的能力在哪裏?

// Models 
if ($request->user()->can('update-post', $post)) { 
    // Update Post... 
} 

// Views 
@can('update-post', $post) 
    <a href="/post/{{ $post->id }}/edit">Edit Post</a> 
@endcan 

但是,沒有提及任何形式的migrationschema

abilities如何以及在哪裏存儲?

+0

'能力'在[服務提供者](https://laravel.com/docs/5.2/authorization#defining-abilities)和/或[策略類](https://laravel.com)中定義/docs/5.2/authorization#policies)。這些功能的邏輯取決於您的要求。 – Fiete

+0

我的答案是否有意義,或者你想要更多的澄清任何事情? –

回答

0

定義了授權規則的工作方式。也許這將涉及數據庫表或其他數據,但它將全部由您自定義。例如,查看"Defining Abilities" section of the docs以瞭解如何實現update-post的能力。

在你AuthServiceProvider

public function boot(GateContract $gate) 
{ 
    $this->registerPolicies($gate); 

    $gate->define('update-post', function ($user, $post) { 
     return $user->id === $post->user_id; 
    }); 
} 

這只是檢查,如果對某個帖子的user_id是一樣的一個在user_id通過。但是,這是你定義你的特定邏輯的地方。

Laracasts有一個非常棒的video series on ACL,清除了很多。

+0

權限存儲在哪裏? – user2094178

+0

您自己創建權限,然後定義它們。例如,在這種情況下,我正在創建一個名爲'update-post'的權限。它只是「存儲」在代碼中。它只是一個函數,它接受一個帖子和一個用戶,並檢查帖子的user_id是否與用戶的id相同。你可以根據你的需要定義這些權限,但是有一些不必要的權限表(除非你自己設置一個權限並讓所有的權限運行)。 –

+0

但這就是Laravel授權所做的一切 - 爲您提供一種簡單,更清晰的編寫函數*的方法,您可以完全自己編寫函數*,其中規則*完全由您自己構成*,與權限功能相關。 –