Laravel文档中Authorization
服务的部分说明了一些示例,例如:
// 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
但是,没有任何类型的migration
和schema
。
abilities
的存储方式和位置在哪里?
答案 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可以清除很多这个。