В настоящее время я настраиваю роль на основе ролей и авторизацию контента. Однако у меня возникла проблема, когда я пытаюсь получить доступ к маршруту супер администратора по-прежнему доступны. Я использовал эту инструкцию https://medium.com/justlaravel/how-to-use-middleware-for-content-restriction-based-on-user-role-in-laravel-2d0d8f8e94c6 - но все еще не очень хорошо работает.
, чтобы хорошо понять, я поделюсь с вами тем, что предполагается выводом и моим примером кодирования на моем промежуточном ПО и API. . php
- У меня есть Middleware CheckRoleRouter. php
- Я создаю файл unauthorized.blade. php для нового ответа, если роль пользователя обращается по неверному маршруту.
- Я уже установил промежуточное ПО для ядра. php
Роль: у меня Super Admin = 0 и Admin = 1
Middleware:
<?php
namespace App\Http\Middleware;
use Closure;
use Auth;
class CheckRoleRouter
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
//Role of users
//Super Admin = 0
//Admin = 1
// how to make a middleware to prevent accessing other router based on their role.
if ($request->user() && $request->user()->role != 0)
{
return new Response(view('unauthorized')->with('role', 'SUPERADMIN'));
}
return $next($request);
}
}
API:
Route::group(['middleware' => 'App\Http\Middleware\CheckRoleRouter'], function()
{
Route::get('list_offers','Api\BusinessOffersController@list_offers');
});
Ядро:
'checker' => \App\Http\Middleware\CheckRoleRouter::class,
Сессия : - это значит, что я использовал роль администратора, поэтому logi c - это маршрутизатор super_admin больше недоступен, потому что я использовал администратора.
Страница: