我有以下表格:
角色表
权限表
现在登录后我如何通过中间件检查该特定用户是否具有以上权限,是否可以创建/编辑/更新/删除。
我不想在路由中指定权限或角色名称。
Route::group(['permission'=>'create-user'] ...
反而希望在中间件的帮助下进行检查。
Route::group(['middleware'=>'authorization'] ...
因此,每次添加新角色和对这些角色的权限时,我都不必在路由中指定个人权限。
三江源
答案 0 :(得分:2)
您需要创建一个中间件,并在该中间件的handle方法中检查权限
public function handle($request, Closure $next, $guard = null)
{
$records = DB::table('role_table')
->join('permissions_table', 'role_table.ID', '=', 'permissions_table.Role_id')
->select('permissions_table.Permissions')
->first();
if (count($records) > 0) {
$permisssions = json_decode($records->Permissions, true);
if (in_array("create", $permissions['test'])) {
// has permission to create
// redirect to the authorized page
}
...
} else {
return redirect('to access denied page');
}
return $next($request);
}
将中间件添加到App\Http\Kernel.php
$routeMiddleware
数组
protected $routeMiddleware = [
'authorization' => \App\Http\Middleware\AuthorizationMiddleware::class
];