【发布时间】:2016-02-08 04:39:13
【问题描述】:
我需要在论坛上授权用户。
所以在刀片中,我有@can('editPost', $post) 在显示回复主题的表单之前。我的 PostPolicy 类有一个 editPost 方法,如果它是用户自己的帖子,则验证为 true。
但是,当我想做一个简单的检查时会出现问题,例如deletePost()。这会检查Auth::user()->isAdmin
public function deletePost(User $user) {
return Auth::user()->isAdmin;
// return $user->isAdmin
}
但是,这甚至不会被调用,因为我没有传递 Post 的实例
我的实际应用程序要复杂得多,但我使用isAdmin 作为一个简单示例。
我想在 AuthServiceProvider 中定义 $gate->define('deletePost', 'App\Policies\PostPolicy@deletePost'); 可能会起作用,但最终会分离我的定义和方法,最终导致大型应用程序混乱 AuthServiceProvider
【问题讨论】:
-
只是为了寻找答案的其他人,这里是注册“全局”策略而不使用模型绑定的好方法。 laravel-tricks.com/tricks/using-51-authorization-without-models
标签: laravel authentication laravel-5.1