我的问题是,当我要访问路由时,出现错误403(不允许访问),我必须从对数据库的所有模型进行分组的中间件路由中将其删除,以控制角色和权限,以开发我每个系统用户应该拥有的功能(如下所示)
web.php
<?php
// ACCESO
Route::get('/', 'AccesoController@index');
Route::post('/login', 'AccesoController@login')->name('login');
Route::get('/logout', 'AccesoController@logout')->name('logout');
Route::get('/archivo/archivos_palabra/{idModulo}', 'ArchivoController@index')->name('archivo');
// MODULOS
Route::group(['middleware' => ['verifica_session', 'verifica_permiso']], function () {
// archivo
Route::post('/archivo/form', 'ArchivoController@form')->name('archivo.form');
Route::post('/archivo/save', 'ArchivoController@save')->name('archivo.save');
Route::post('/archivo/delete', 'ArchivoController@delete')->name('archivo.delete');
});
Kernel.php
中的安装
'verifica_session' => \App\Http\Middleware\verificaSessionMiddleware::class,
'verifica_permiso' => \App\Http\Middleware\verificaPermisoMiddleware::class,
verificaPermisoMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
use Session;
class verificaPermisoMiddleware {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next) {
$recurso = substr($request->getPathInfo(), 1);
$tienePermiso = ($recurso == 'principal' || $recurso == 'perfil');
if(!$tienePermiso) {
foreach (session('recursos') as $objetoRecurso) {
if(starts_with($recurso, $objetoRecurso->nombreRecurso)) {
if($objetoRecurso->esMenu) {
Session::put('menu-item', ('menu-item-' . $objetoRecurso->nombreRecurso));
}
$tienePermiso = true;
break;
}
}
}
if($tienePermiso) {
return $next($request);
} else {
abort(403);
}
}
}
verificaSessionMiddleware.php
<?php
namespace App\Http\Middleware;
use Closure;
class verificaSessionMiddleware {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next) {
if(session('username')) {
return $next($request);
} else {
return redirect('/');
}
}
}
我必须通知您,在中间件的路由中我还有其他运行正常的路由,请问如何解决?