【发布时间】:2017-10-05 14:28:44
【问题描述】:
我正在尝试为我的 laravel API 实现角色和权限。我安装了包:
https://yajrabox.com/docs/laravel-acl/3.0/introduction
如果有人可以向我解释它是如何工作的,那就太好了,我要做的就是在用户点击一个 API 路由时获得许可。 我不想在每条路由中都设置中间件,因为我会做几条路由,每次设置中间件会很痛苦,我想动态地做。
我尝试自己做,但它不起作用。这是我在 Authserviceprovider 中的代码:
public function boot(GateContract $gate)
{
$this->registerPolicies();
Passport::routes();
Passport::tokensExpireIn(Carbon::now()->addDays(15));
Passport::refreshTokensExpireIn(Carbon::now()->addDays(30));
$permissions = Permission::with('roles')->get();
foreach ($permissions as $permission)
{
$gate->define($permission->name, function (User $user) use ($permission) {
return $user->hasPermission($permission);
});
}
}
我正在这样做:https://github.com/laracasts/laravel-5-roles-and-permissions-demo/tree/master/app
【问题讨论】:
-
"我不想在每条路由中都设置中间件,因为我会做多条路由,而且每次都会成为一个痛苦的中间件" - 你意识到你不必设置中间件每次都对吗?您可以在 web.php 文件中设置一次,中间件之间的任何内容都会被自动检查
-
我不知道,我还在学习 Laravel
-
我用来设置路由的文件名为 api.php
-
我已经为您发布了有关如何使用中间件的答案。这应该非常适合您尝试做的事情。任何您不想被中间件检查的路由,只需将其放在 }); 下方即可;