簡體   English   中英

Controller構造函數中的Laravel策略

[英]Laravel Policies in Controller Constructor

我正在使用策略類來授權一些用戶(作者或管理員)來更新和刪除Post Model中的記錄。 這是一個簡單的CRUD。 問題是:如何立即針對特定方法運行策略檢查? 例如,我可以在PostController構造函數中使用中間件來檢查用戶是否已登錄,但是如何執行類似於需要參數的策略的操作?

后控制器

public function __construct()
{
  $this->middleware('auth', ['except' => ['index', 'show']]);
}

后政策

class PostPolicy
{
  use HandlesAuthorization;

  public function before($user)
  {
    if ($user->hasRole('admin')) {
      return true;
    }
  }

  public function manage($user, $post)
  {
    return $user->id == $post->user_id;
  }
}

AuthServiceProvider

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

  Gate::define('manage-post', 'App\Policies\PostPolicy@manage');
}

我嘗試了這個:

$this->middleware('can:manage-post', ['except' => ['index', 'show']]);

但這沒有用。

提前致謝。

我只注冊該策略並使用該策略,而不是單獨寫出一個“功能”。

can:manage,post

manage操作, post用於門(資源)的“路徑參數”。

Laravel 5.5文檔-授權-通過中間件授權操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM