我使用策略类授权某些用户(作者或管理员)更新和删除Post Model中的记录。这是一个简单的CRUD。问题是:如何立即对特定方法进行策略检查?例如,我可以在PostController构造函数中使用中间件来检查用户是否已记录,但是我该如何处理类似于需要参数的策略呢?
PostController中
public function __construct()
{
$this->middleware('auth', ['except' => ['index', 'show']]);
}
PostPolicy
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']]);
但它没有用。
提前致谢。
答案 0 :(得分:0)
我只是注册政策并使用它而不是单独写出“能力”。
can:manage,post
manage
操作,post
用于门(资源)的路径参数。
Laravel 5.5 Docs - Authorization - Authorizing Actions - via Middleware