Я на самом деле использую spatie для роли и разрешений, но у меня есть 1 проблема, которую я не могу решить, она связана с промежуточным программным обеспечением с проверкой подлинности перенаправления.
Я использую в контроллерах промежуточное программное обеспечение роли, чтобы разрешить или запретитьДоступ к контроллеру основан на ролях, поэтому проблема заключается в том, что между этими двумя промежуточными программами происходит некая петля перенаправления, которая приводит к этой ошибке:
ERR_TOO_MANY_REDIRECTS
Далее мой код:
web.php:
Auth::routes();
Route::get('/', ['as'=>'index', 'uses' => 'HomeController@index']);
Route::resource('Empleados', 'EmpleadosController');
Route::resource('Tipopermisos', 'TipopermisosController');
Route::resource('Tiemposcompensatorios', 'TiemposcompensatoriosController');
Route::resource('Permisos', 'PermisosController');
Route::resource('Reportes', 'ReportesController');
Route::get('listaTC', ['as'=>'listaTC', 'uses' =>'TiemposcompensatoriosController@listaTC']);
Route::get('listaP', ['as'=>'listaP', 'uses' => 'PermisosController@listaP']);
Route::get('searchBar', ['as'=>'searchBar', 'uses' => 'PermisosController@searchBar']);
Route::get('generalReport', ['as'=>'generalReport', 'uses' =>'ReportesController@generalReport']);
Домашний контроллер:
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return redirect()->route('Empleados.index');
}
}
RedirectIfAuthenticated.php:
class RedirectIfAuthenticated
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/');
}
return $next($request);
}
}
Наконец, мой метод индекса EmpleadosController whit, который должен перенаправлять имя входа и мой конструктор для проверки, есть ли у пользователя rol для доступа к контроллеру:
public function __construct()
{
$this->middleware(['role:superadmin|admin']);
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$data = strtoupper($request->buscar);
if( strlen($data) >3){
$empleados = Empleado::where('nombre', 'LIKE', "%{$data}%")->paginate(10);
}
else{
$empleados = Empleado::paginate(10);
}
if ($request->ajax()) {
return view('empleados.list', compact('empleados'))->render();
}
return view('empleados.index',compact('empleados'));
}
Из того, что я могуПосмотрите на это каждый раз, когда пользователь входит в промежуточное программное обеспечение с переадресацией, прошедшее проверку подлинности, что приводит меня к методу index в домашнем контроллере, который перенаправляет меня в EmpleadosController и снова запускает промежуточное ПО роликоторый в то же время снова запускает промежуточное программное обеспечение, прошедшее проверку подлинности с переадресацией, и в результате этого я застрял в этом цикле перенаправления!
Если я удалю промежуточное программное обеспечение роли из моего контроллера, оно будет работать: |
Я будузагрузить любой необходимый код, который вы просите, надеюсь, вы можете помочь мне!Спасибо.